Chicory: A Colorful Tale Wiki chicorywiki https://wiki.chicory.pizza/wiki/Main_Page MediaWiki 1.41.0 first-letter Media Special Talk User User talk Chicory: A Colorful Tale Wiki Chicory: A Colorful Tale Wiki talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Module Module talk Gadget Gadget talk Gadget definition Gadget definition talk Template:Clear 10 110 231 2022-03-08T14:12:32Z dev>DarkMatterMan4500 0 Created page with "<div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude>" wikitext text/x-wiki <div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude> 38bab3e3d7fbd3d6800d46556e60bc6bac494d72 Template:Tl 10 18 35 2022-09-30T01:09:19Z dev>Pppery 0 Redirected page to [[Template:Template link]] wikitext text/x-wiki #REDIRECT [[Template:Template link]] fb9a6b420e13178e581af6e7d64274cd30a79017 36 35 2024-02-08T07:28:29Z Ngyikp 2 1 revision imported from [[:dev:Template:Tl]] wikitext text/x-wiki #REDIRECT [[Template:Template link]] fb9a6b420e13178e581af6e7d64274cd30a79017 Template:Template link 10 16 31 2022-09-30T01:10:00Z dev>Pppery 0 46 revisions imported from [[:wikipedia:Template:Template_link]] wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> eabbec62efe3044a98ebb3ce9e7d4d43c222351d 32 31 2024-02-08T07:28:28Z Ngyikp 2 1 revision imported from [[:dev:Template:Template_link]] wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude>{{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> eabbec62efe3044a98ebb3ce9e7d4d43c222351d Template:Documentation 10 9 17 2022-09-30T01:43:37Z dev>MacFan4000 0 4 revisions imported from [[:meta:Template:Documentation]]: this is useful and was on templateiwki wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>[[Category:Templates]]</noinclude> 9885bb4fa99bf3d5b960e73606bbb8eed3026877 18 17 2024-02-08T07:28:24Z Ngyikp 2 1 revision imported from [[:dev:Template:Documentation]] wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>[[Category:Templates]]</noinclude> 9885bb4fa99bf3d5b960e73606bbb8eed3026877 Template:Tlx 10 19 37 2022-09-30T02:04:32Z dev>Pppery 0 Redirected page to [[Template:Template link expanded]] wikitext text/x-wiki #REDIRECT [[Template:Template link expanded]] 155e901040104f96908f1f4627c4eb3501301bf9 38 37 2024-02-08T07:28:29Z Ngyikp 2 1 revision imported from [[:dev:Template:Tlx]] wikitext text/x-wiki #REDIRECT [[Template:Template link expanded]] 155e901040104f96908f1f4627c4eb3501301bf9 Module:Arguments 828 11 21 2022-09-30T02:32:01Z dev>Pppery 0 24 revisions imported from [[:wikipedia:Module:Arguments]] Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 22 21 2024-02-08T07:28:25Z Ngyikp 2 1 revision imported from [[:dev:Module:Arguments]] Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Documentation 828 12 23 2022-09-30T02:36:08Z dev>Pppery 0 Pppery moved page [[Module:Documentation/2]] to [[Module:Documentation]] without leaving a redirect Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 78cc3a78f2b5dbb267fa16027c0800a22dbd3c42 24 23 2024-02-08T07:28:26Z Ngyikp 2 1 revision imported from [[:dev:Module:Documentation]] Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 78cc3a78f2b5dbb267fa16027c0800a22dbd3c42 Template:En-WP attribution notice/doc 10 82 168 2022-09-30T15:17:56Z dev>Pppery 0 7 revisions imported from [[:templatewikiarchive:Template:En-WP_attribution_notice/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This template is used to provide attribution to Wikipedia from external wikis, as described on [[w:en:Wikipedia:Reusing Wikipedia content#Example notice|Wikipedia:Reusing Wikipedia content]]. === Usage === &#123;&#123;En-WP attribution notice&#124;''page name''&#125;&#125; The page name should be the name of the Wikipedia page that is being attributed. If no page name is specified, the name of the current page on the local wiki is used. <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> }}</includeonly> 5cd6463862f7ea04718d41b3b9aa554927f65c10 Template:En-WP attribution notice 10 81 166 2022-09-30T15:18:52Z dev>Pppery 0 wikitext text/x-wiki <includeonly>{| style="border: 1px solid #e0e0e0; background-color: #f8f8f8; color:black; margin: 5px auto; width: 60%;" |- | style="padding: 3px 10px;" | [[File:Wikipedia-logo-v2.svg|30px|Wikipedia logo]] | style="font-size: 90%; padding: 3px;" | This page uses material from the Wikipedia page [[w:en:{{{1|{{FULLPAGENAME}}}}}|{{{1|{{FULLPAGENAME}}}}}]], which is released under the [[w:en:Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License|Creative Commons Attribution-ShareAlike 3.0 Unported License]] ([https://en.wikipedia.org/w/index.php?title={{urlencode:{{{1|{{FULLPAGENAME}}}}}}}&action=history view authors]). |} [[Category:Pages from English Wikipedia‎]]</includeonly> <noinclude> {{documentation}} {{En-WP attribution notice|Template:En-WP attribution notice}} </noinclude> 22d054cdfdc01cc48994b02dc0ccde4265694650 Template:Template link expanded 10 17 33 2022-09-30T18:48:13Z dev>Pppery 0 wikitext text/x-wiki <code><nowiki>{{</nowiki>{{#if:{{{subst|}}} |[[Help:Substitution|subst]]:}}<!-- -->[[{{{sister|{{{SISTER|}}}}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!-- -->{{#if:{{{2|}}} |&#124;{{{2}}}}}<!-- -->{{#if:{{{3|}}} |&#124;{{{3}}}}}<!-- -->{{#if:{{{4|}}} |&#124;{{{4}}}}}<!-- -->{{#if:{{{5|}}} |&#124;{{{5}}}}}<!-- -->{{#if:{{{6|}}} |&#124;{{{6}}}}}<!-- -->{{#if:{{{7|}}} |&#124;{{{7}}}}}<!-- -->{{#if:{{{8|}}} |&#124;{{{8}}}}}<!-- -->{{#if:{{{9|}}} |&#124;{{{9}}}}}<!-- -->{{#if:{{{10|}}} |&#124;{{{10}}}}}<!-- -->{{#if:{{{11|}}} |&#124;{{{11}}}}}<!-- -->{{#if:{{{12|}}} |&#124;{{{12}}}}}<!-- -->{{#if:{{{13|}}} |&#124;{{{13}}}}}<!-- -->{{#if:{{{14|}}} |&#124;{{{14}}}}}<!-- -->{{#if:{{{15|}}} |&#124;{{{15}}}}}<!-- -->{{#if:{{{16|}}} |&#124;{{{16}}}}}<!-- -->{{#if:{{{17|}}} |&#124;{{{17}}}}}<!-- -->{{#if:{{{18|}}} |&#124;{{{18}}}}}<!-- -->{{#if:{{{19|}}} |&#124;{{{19}}}}}<!-- -->{{#if:{{{20|}}} |&#124;{{{20}}}}}<!-- -->{{#if:{{{21|}}} |&#124;''...''}}<!-- --><nowiki>}}</nowiki></code><noinclude> {{Documentation}} </noinclude> 9f670205d4b358df089b1a820f78f02a88afca3a 34 33 2024-02-08T07:28:28Z Ngyikp 2 1 revision imported from [[:dev:Template:Template_link_expanded]] wikitext text/x-wiki <code><nowiki>{{</nowiki>{{#if:{{{subst|}}} |[[Help:Substitution|subst]]:}}<!-- -->[[{{{sister|{{{SISTER|}}}}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!-- -->{{#if:{{{2|}}} |&#124;{{{2}}}}}<!-- -->{{#if:{{{3|}}} |&#124;{{{3}}}}}<!-- -->{{#if:{{{4|}}} |&#124;{{{4}}}}}<!-- -->{{#if:{{{5|}}} |&#124;{{{5}}}}}<!-- -->{{#if:{{{6|}}} |&#124;{{{6}}}}}<!-- -->{{#if:{{{7|}}} |&#124;{{{7}}}}}<!-- -->{{#if:{{{8|}}} |&#124;{{{8}}}}}<!-- -->{{#if:{{{9|}}} |&#124;{{{9}}}}}<!-- -->{{#if:{{{10|}}} |&#124;{{{10}}}}}<!-- -->{{#if:{{{11|}}} |&#124;{{{11}}}}}<!-- -->{{#if:{{{12|}}} |&#124;{{{12}}}}}<!-- -->{{#if:{{{13|}}} |&#124;{{{13}}}}}<!-- -->{{#if:{{{14|}}} |&#124;{{{14}}}}}<!-- -->{{#if:{{{15|}}} |&#124;{{{15}}}}}<!-- -->{{#if:{{{16|}}} |&#124;{{{16}}}}}<!-- -->{{#if:{{{17|}}} |&#124;{{{17}}}}}<!-- -->{{#if:{{{18|}}} |&#124;{{{18}}}}}<!-- -->{{#if:{{{19|}}} |&#124;{{{19}}}}}<!-- -->{{#if:{{{20|}}} |&#124;{{{20}}}}}<!-- -->{{#if:{{{21|}}} |&#124;''...''}}<!-- --><nowiki>}}</nowiki></code><noinclude> {{Documentation}} </noinclude> 9f670205d4b358df089b1a820f78f02a88afca3a Module:Yesno 828 114 239 2022-10-01T17:25:37Z dev>Pppery 0 Pppery moved page [[Module:Yesno/2]] to [[Module:Yesno]] without leaving a redirect Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:No globals 828 113 237 2022-10-01T17:28:48Z dev>Pppery 0 Pppery moved page [[Module:No globals/2]] to [[Module:No globals]] without leaving a redirect Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) 8ce3969f7d53b08bd00dabe4cc9780bc6afd412a Module:Documentation/config 828 13 25 2022-10-01T17:37:53Z dev>Pppery 0 Pppery moved page [[Module:Documentation/config/2]] to [[Module:Documentation/config]] without leaving a redirect Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg d70e8b1402a2bbe08a1fef4b75d743e661af0c95 26 25 2024-02-08T07:28:26Z Ngyikp 2 1 revision imported from [[:dev:Module:Documentation/config]] Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg d70e8b1402a2bbe08a1fef4b75d743e661af0c95 Template:Documentation subpage 10 10 19 2022-10-01T17:51:17Z dev>Pppery 0 wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = '''This is a documentation subpage''' for '''{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br/> It contains usage information, [[mw:Help:Categories|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} | page}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 471e685c1c643a5c6272e20e49824fffebad0448 20 19 2024-02-08T07:28:25Z Ngyikp 2 1 revision imported from [[:dev:Template:Documentation_subpage]] wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = '''This is a documentation subpage''' for '''{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br/> It contains usage information, [[mw:Help:Categories|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} | page}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> 471e685c1c643a5c6272e20e49824fffebad0448 Module:Message box 828 111 233 2022-10-21T19:39:49Z dev>Pppery 0 These can just go, the first for being very Wikipedia-specific, and the second for being almost impossible to import properly Scribunto text/plain -- This is a meta-module for producing message box templates, including -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. -- Load necessary modules. require('Module:No globals') local getArgs local yesno = require('Module:Yesno') local templatestyles = 'Module:Message box/styles.css' -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- Define constants local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) and not self.isSmall then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end local function templatestyles(frame, src) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. 'CONFIG_MODULE' end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) be00cd389f9f2afcd361e5d5e33622839555cbd9 Module:Message box/configuration 828 112 235 2022-10-21T22:38:02Z dev>Pppery 0 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix'}, }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } c6bd9191861b23e474e12b19c694335c4bc3af5f Template:Uses TemplateStyles 10 109 229 2022-11-07T02:43:20Z dev>Pppery 0 3 revisions imported from [[:wikipedia:Template:Uses_TemplateStyles]]: Importing this now because the Wikipedia version will fail in a non-obvious way (a problem I caught on another Miraheze wiki) wikitext text/x-wiki <includeonly>{{#invoke:Uses TemplateStyles|main}}</includeonly><noinclude> {{Uses TemplateStyles|Template:Uses TemplateStyles/example.css|nocat=true}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 7e26d8f257e302bd8a3dcbe53f52741ae0884f74 Template:Uses TemplateStyles/doc 10 115 241 2022-11-07T02:47:20Z dev>Pppery 0 wikitext text/x-wiki {{Documentation subpage}} <!-- Categories go at the bottom of this page, and interwikis go on Wikidata. --> This template is used to show that templates have been converted to use [[mw:Extension:TemplateStyles|TemplateStyles]]. It is placed at the top of the template's /doc page. == Usage == ; Basic : {{tlx|Uses TemplateStyles|''TemplateStyles page name''}} ; All parameters : {{tlx|Uses TemplateStyles|''TemplateStyles page 1''|''TemplateStyles page 2''|''TemplateStyles page 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}} The first TemplateStyles page name is required. ===TemplateStyles sandboxes=== Note that if a sandbox version of the TemplateStyle exists, it will also be linked. This is only for sandbox versions. The subpage name of the sandbox version should be the same, but as a subpage of the templates sandbox. For example, if the TemplateStyles page name is <code>Template:Foo/styles.css</code>, then the sandbox version should be <code>Template:Foo/sandbox/styles.css</code> == Examples == ===One style page=== {{tlx|Uses TemplateStyles|Template:Arrowlist/styles.css}} {{Uses TemplateStyles|Template:Arrowlist/styles.css|nocat=true}} {{clear}} ===Multiple style pages=== {{tlx|Uses TemplateStyles|Template:Arrowlist/styles.css|Template:Routemap/styles.css}} {{Uses TemplateStyles|Template:Arrowlist/styles.css|Template:Routemap/styles.css|nocat=true}} {{clear}} ===Sandbox version of style page exists=== {{tlx|Uses TemplateStyles|Template:Uses TemplateStyles/example.css}} {{Uses TemplateStyles|Template:Uses TemplateStyles/example.css|nocat=true}} {{clear}} ===No style pages specified=== {{tlx|Uses TemplateStyles}} {{Uses TemplateStyles|nocat=true}} {{clear}} == TemplateData == <templatedata> { "description": "Used to show that templates have been converted to use TemplateStyles.", "format": "inline", "params": { "1": { "label": "Stylesheet 1", "description": "Name of the main stylesheet used in the template or module. Use multiple parameters to specify multiple stylesheets.", "required": true, "type": "wiki-page-name" }, "2": { "label": "Stylesheet 2", "description": "Name of the second stylesheet.", "type": "wiki-page-name" }, "3": { "label": "Stylesheet 3", "description": "Name of the third stylesheet.", "type": "wiki-page-name" }, "4": { "label": "Stylesheet 4", "description": "Name of the fourth stylesheet.", "type": "wiki-page-name" }, "5": { "label": "Stylesheet 5", "description": "Name of the fifth stylesheet.", "type": "wiki-page-name" }, "6": { "label": "Stylesheet 6", "description": "Name of the sixth stylesheet.", "type": "wiki-page-name" }, "7": { "label": "Stylesheet 7", "description": "Name of the seventh stylesheet.", "type": "wiki-page-name" }, "8": { "label": "Stylesheet 8", "description": "Name of the eighth stylesheet.", "type": "wiki-page-name" }, "9": { "label": "Stylesheet 9", "description": "Name of the ninth stylesheet.", "type": "wiki-page-name" }, "10": { "label": "Stylesheet 10", "description": "Name of the tenth stylesheet.", "type": "wiki-page-name" } } } </templatedata> <includeonly> [[Category:Templates]] </includeonly> c86681b5a4f99bb6940c1ab54645e0f43131bb4e Module:Uses TemplateStyles 828 116 243 2022-11-07T02:51:31Z dev>Pppery 0 Scribunto text/plain -- This module implements the {{Uses TemplateStyles}} template. local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) return p.renderBox(args) end function p.renderBox(tStyles) local boxArgs = {} if #tStyles < 1 then boxArgs.text = '<strong class="error">Error: no TemplateStyles specified</strong>' else local tStylesLinks = {} for i, ts in ipairs(tStyles) do local sandboxLink = nil local tsTitle = mw.title.new(ts) if tsTitle then local tsSandboxTitle = mw.title.new(string.format('%s:%s/sandbox/%s', tsTitle.nsText, tsTitle.baseText, tsTitle.subpageText)) if tsSandboxTitle and tsSandboxTitle.exists then sandboxLink = string.format(' ([[:%s|sandbox]])', tsSandboxTitle.prefixedText) end end tStylesLinks[i] = string.format('[[:%s]]%s', ts, sandboxLink or '') end local tStylesList = mw.text.listToText(tStylesLinks) boxArgs.text = 'This ' .. (mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') .. ' uses [[mw:Extension:TemplateStyles|TemplateStyles]]:\n' .. tStylesList end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Farm-Fresh css add.svg|32px|alt=CSS]]' return mMessageBox.main('mbox', boxArgs) end return p 3c7364ddaba9beb17a73b0f5256cd7fc3b3051f4 Template:Documentation/doc 10 15 29 2022-12-16T04:57:03Z dev>Pppery 0 /* Usage */ wikitext text/x-wiki {{documentation subpage}} This is the {{tl|Documentation}} template, used on almost every template page to contain that template's documented instructions and information. For detailed instructions on how and when to use this template, see [[w:Wikipedia:Template documentation]]. This template displays a green documentation box like you are seeing now and automatically loads the content from a /doc subpage. It can also load the content from other places if instructed to. This template is intended for documenting templates and other pages that are [[w:Wikipedia:Transclusion|transcluded]] onto other pages. It can be used in the [[w:Wikipedia:Template namespace|template namespace]] and most other [[w:Wikipedia:Namespace|namespace]]s. Use of this template allows templates to be [[w:Wikipedia:Protection policy|protected]] where necessary, while allowing anyone to edit the documentation and categories. ===Usage=== Normally this template is used without any parameters, placed at the bottom of the template or page being documented, within a &lt;noinclude&gt; container: <syntaxhighlight lang="xml+smarty"> <!--Last line of your template code--><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> </syntaxhighlight> Then this template automatically loads the content from the /doc subpage of the template it is used on. This template can also load the content from any other page. Like this: <syntaxhighlight lang="xml+smarty"> <!--Last line of your template code--><noinclude> {{Documentation |Template:Other page/doc}} </noinclude> </syntaxhighlight> Note that when loading the documentation from a page other than the local /doc page it becomes tricky to handle the categories. The content can also be fed directly as text. Like this: <syntaxhighlight lang="xml+smarty"> <!--Last line of your template code--><noinclude> {{Documentation | content = (some documentation) }}</noinclude> </syntaxhighlight> When the <nowiki>|content=</nowiki> parameter is used, the doc box normally does not show the [edit] [purge] links in the top right corner. Note that if the /doc page exists, a link to it is still shown in the link box below the doc box. Parameter <nowiki>|1=</nowiki> and the <nowiki>|content=</nowiki> parameter can also be combined, like this: <syntaxhighlight lang="xml+smarty"> <!--Last line of your template code--><noinclude> {{Documentation |1=Template:Any page/doc | content = {{Template:Any page/doc |parameters}} }}</noinclude> </syntaxhighlight> Then the pagename fed as parameter 1 is used for the [edit] [purge] links and for the /doc link in the link box below the doc box. But the '''content''' parameter is used for the content shown in the doc box. The above code means that the content is transcluded as {{tlx|Any page/doc|parameters}}. In this example a parameter is also fed to the /doc page being loaded. === Shortcut === To automatically insert the [[w:Wikipedia:Noinclude|noinclude tags]], the template call and the guiding comment, use this [[w:WP:Substitution|substitution]] code:<br> :<code><nowiki>{{subst:doc-code}}</nowiki></code> ===Best practice=== The code should be added at the bottom of the template code, with no space before &lt;noinclude&gt; (which would cause extra space on pages where the template is used). Categories that apply to the template itself should be added to the bottom of the /doc subpage, inside &lt;includeonly&gt; tags. If the documentation page contains &lt;includeonly&gt; or &lt;noinclude&gt; tags as part of the visible documentation text, replace the "<code>&lt;</code>" with "<code>&amp;lt;</code>". ===Heading=== When in the Template namespace, this template shows this heading: :[[File:Test Template Info-Icon - Version (2).svg|32px|link=[[w:Wikipedia:Template documentation]]]] '''Template documentation''' In most other namespaces, such as "{{SITENAME}}:", it shows this heading: :'''Documentation''' But when on File (image) pages it shows this heading: :'''Summary''' The '''heading''' parameter can be used to set the heading to something else. Like this: :<code><nowiki>{{Documentation |heading=Infobox documentation}}</nowiki></code> If the '''heading''' parameter is empty but defined, no heading is shown and no [edit] [purge] links are shown. Like this: :<code><nowiki>{{Documentation |heading=}}</nowiki></code> The '''heading-style''' parameter can be fed optional [[w:Cascading Style Sheets|CSS]] values. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example: :<code>heading-style=font-size:150%;color:red;</code> ===Link box=== Below the big doc box is a small link box that shows some meta-data about the documentation. The link box shows different things depending on what parameters are fed to this template, and in which namespace it is used. In some cases the link box is not shown at all. To hide the link box, add the parameter : <nowiki>|link box=off</nowiki>. You can also insert customised text into the link box, by setting the <nowiki>|link box=</nowiki> parameter. For example: <pre style="width:auto; overflow:scroll"> |link box=This documentation is automatically generated by [[w:Template:Country showdata]] </pre> ===Automatic functions=== If the documentation page does not exist, the [create] link includes a [[mw:Manual:Creating pages with preloaded text|preload]] page so that clicking it will pre-fill the edit form with the basic documentation page format. Preload text is also used for the /sandbox and /testcases [create] links. ===Subject namespaces vs. talk namespaces=== Terminology: ''Subject namespaces'' are the opposite of ''talk namespaces''. For instance "Template:" is the subject space of "Template talk:". This template is usually placed in a subject namespace, within &lt;noinclude&gt; tags. But in some cases this template needs to be on the talk page: * In the Mediawiki namespace, since &lt;noinclude&gt; often does not work in system messages, and since the Mediawiki namespace needs to be kept clean for performance reasons. When placed on talk pages, this template usually is placed near the top of the page and without &lt;noinclude&gt; tags. The /doc, /sandbox and /testcases pages should normally be in the subject namespace, except in the namespaces that do not have the MediaWiki [[w:m:Help:Link#Subpage feature|subpage feature]] enabled: Main, File, Mediawiki and Category. (But currently we only show the /sandbox and /testcases links from User, User talk, Template and Template talk namespaces.) There are also a whole bunch of other technical reasons why the /doc page must be stored under the talk page for those (but only those) namespaces. This template automatically points its [create] links for the /doc, /sandbox and /testcases to the right namespace. ===Technical details=== The preload page for the /doc [create] link is [[Template:Documentation/preload]]. The preload pages for the /sandbox and /testcases [create] links are [[Template:Documentation/preload-sandbox]] and [[Template:Documentation/preload-testcases]]. The preload page for the /sandbox [mirror] link is [[Template:Documentation/mirror]]. ====Full syntax==== <pre> {{Documentation}} {{Documentation | content = }} {{Documentation | [path to documentation page] | heading-style = | heading = | link box = }} </pre> ===See also=== * {{tl|Documentation subpage}}, a notice placed at the top of a /doc subpage explaining its role and including a link to the page it documents. * [[w:Wikipedia:Template documentation]] is a how-to guide to template documentation. * [[w:Wikipedia:Template sandbox and test cases]] explains the use of /sandbox and /testcases subpages and includes more information about template testing. 92ff94e315af492eb2698f80537068806f486349 30 29 2024-02-08T07:28:27Z Ngyikp 2 1 revision imported from [[:dev:Template:Documentation/doc]] wikitext text/x-wiki {{documentation subpage}} This is the {{tl|Documentation}} template, used on almost every template page to contain that template's documented instructions and information. For detailed instructions on how and when to use this template, see [[w:Wikipedia:Template documentation]]. This template displays a green documentation box like you are seeing now and automatically loads the content from a /doc subpage. It can also load the content from other places if instructed to. This template is intended for documenting templates and other pages that are [[w:Wikipedia:Transclusion|transcluded]] onto other pages. It can be used in the [[w:Wikipedia:Template namespace|template namespace]] and most other [[w:Wikipedia:Namespace|namespace]]s. Use of this template allows templates to be [[w:Wikipedia:Protection policy|protected]] where necessary, while allowing anyone to edit the documentation and categories. ===Usage=== Normally this template is used without any parameters, placed at the bottom of the template or page being documented, within a &lt;noinclude&gt; container: <syntaxhighlight lang="xml+smarty"> <!--Last line of your template code--><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> </syntaxhighlight> Then this template automatically loads the content from the /doc subpage of the template it is used on. This template can also load the content from any other page. Like this: <syntaxhighlight lang="xml+smarty"> <!--Last line of your template code--><noinclude> {{Documentation |Template:Other page/doc}} </noinclude> </syntaxhighlight> Note that when loading the documentation from a page other than the local /doc page it becomes tricky to handle the categories. The content can also be fed directly as text. Like this: <syntaxhighlight lang="xml+smarty"> <!--Last line of your template code--><noinclude> {{Documentation | content = (some documentation) }}</noinclude> </syntaxhighlight> When the <nowiki>|content=</nowiki> parameter is used, the doc box normally does not show the [edit] [purge] links in the top right corner. Note that if the /doc page exists, a link to it is still shown in the link box below the doc box. Parameter <nowiki>|1=</nowiki> and the <nowiki>|content=</nowiki> parameter can also be combined, like this: <syntaxhighlight lang="xml+smarty"> <!--Last line of your template code--><noinclude> {{Documentation |1=Template:Any page/doc | content = {{Template:Any page/doc |parameters}} }}</noinclude> </syntaxhighlight> Then the pagename fed as parameter 1 is used for the [edit] [purge] links and for the /doc link in the link box below the doc box. But the '''content''' parameter is used for the content shown in the doc box. The above code means that the content is transcluded as {{tlx|Any page/doc|parameters}}. In this example a parameter is also fed to the /doc page being loaded. === Shortcut === To automatically insert the [[w:Wikipedia:Noinclude|noinclude tags]], the template call and the guiding comment, use this [[w:WP:Substitution|substitution]] code:<br> :<code><nowiki>{{subst:doc-code}}</nowiki></code> ===Best practice=== The code should be added at the bottom of the template code, with no space before &lt;noinclude&gt; (which would cause extra space on pages where the template is used). Categories that apply to the template itself should be added to the bottom of the /doc subpage, inside &lt;includeonly&gt; tags. If the documentation page contains &lt;includeonly&gt; or &lt;noinclude&gt; tags as part of the visible documentation text, replace the "<code>&lt;</code>" with "<code>&amp;lt;</code>". ===Heading=== When in the Template namespace, this template shows this heading: :[[File:Test Template Info-Icon - Version (2).svg|32px|link=[[w:Wikipedia:Template documentation]]]] '''Template documentation''' In most other namespaces, such as "{{SITENAME}}:", it shows this heading: :'''Documentation''' But when on File (image) pages it shows this heading: :'''Summary''' The '''heading''' parameter can be used to set the heading to something else. Like this: :<code><nowiki>{{Documentation |heading=Infobox documentation}}</nowiki></code> If the '''heading''' parameter is empty but defined, no heading is shown and no [edit] [purge] links are shown. Like this: :<code><nowiki>{{Documentation |heading=}}</nowiki></code> The '''heading-style''' parameter can be fed optional [[w:Cascading Style Sheets|CSS]] values. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example: :<code>heading-style=font-size:150%;color:red;</code> ===Link box=== Below the big doc box is a small link box that shows some meta-data about the documentation. The link box shows different things depending on what parameters are fed to this template, and in which namespace it is used. In some cases the link box is not shown at all. To hide the link box, add the parameter : <nowiki>|link box=off</nowiki>. You can also insert customised text into the link box, by setting the <nowiki>|link box=</nowiki> parameter. For example: <pre style="width:auto; overflow:scroll"> |link box=This documentation is automatically generated by [[w:Template:Country showdata]] </pre> ===Automatic functions=== If the documentation page does not exist, the [create] link includes a [[mw:Manual:Creating pages with preloaded text|preload]] page so that clicking it will pre-fill the edit form with the basic documentation page format. Preload text is also used for the /sandbox and /testcases [create] links. ===Subject namespaces vs. talk namespaces=== Terminology: ''Subject namespaces'' are the opposite of ''talk namespaces''. For instance "Template:" is the subject space of "Template talk:". This template is usually placed in a subject namespace, within &lt;noinclude&gt; tags. But in some cases this template needs to be on the talk page: * In the Mediawiki namespace, since &lt;noinclude&gt; often does not work in system messages, and since the Mediawiki namespace needs to be kept clean for performance reasons. When placed on talk pages, this template usually is placed near the top of the page and without &lt;noinclude&gt; tags. The /doc, /sandbox and /testcases pages should normally be in the subject namespace, except in the namespaces that do not have the MediaWiki [[w:m:Help:Link#Subpage feature|subpage feature]] enabled: Main, File, Mediawiki and Category. (But currently we only show the /sandbox and /testcases links from User, User talk, Template and Template talk namespaces.) There are also a whole bunch of other technical reasons why the /doc page must be stored under the talk page for those (but only those) namespaces. This template automatically points its [create] links for the /doc, /sandbox and /testcases to the right namespace. ===Technical details=== The preload page for the /doc [create] link is [[Template:Documentation/preload]]. The preload pages for the /sandbox and /testcases [create] links are [[Template:Documentation/preload-sandbox]] and [[Template:Documentation/preload-testcases]]. The preload page for the /sandbox [mirror] link is [[Template:Documentation/mirror]]. ====Full syntax==== <pre> {{Documentation}} {{Documentation | content = }} {{Documentation | [path to documentation page] | heading-style = | heading = | link box = }} </pre> ===See also=== * {{tl|Documentation subpage}}, a notice placed at the top of a /doc subpage explaining its role and including a link to the page it documents. * [[w:Wikipedia:Template documentation]] is a how-to guide to template documentation. * [[w:Wikipedia:Template sandbox and test cases]] explains the use of /sandbox and /testcases subpages and includes more information about template testing. 92ff94e315af492eb2698f80537068806f486349 Module:Documentation/styles.css 828 14 27 2023-01-16T23:40:04Z dev>Pppery 0 text text/plain .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } /* [[Category:Template stylesheets]] */ 5fb984fe8632dc068db16853a824c9f3d5175dd9 28 27 2024-02-08T07:28:27Z Ngyikp 2 1 revision imported from [[:dev:Module:Documentation/styles.css]] text text/plain .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } /* [[Category:Template stylesheets]] */ 5fb984fe8632dc068db16853a824c9f3d5175dd9 Main Page 0 1 1 2024-02-08T00:20:07Z MediaWiki default 1 Welcome to Miraheze! wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 21236ac3f8d65e5563b6da6b70815ca6bf1e6616 File:Chicory Wiki page background.jpg 6 2 2 2024-02-08T04:23:43Z Ngyikp 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 3 2 2024-02-08T04:24:37Z Ngyikp 2 Protected "[[File:Chicory Wiki page background.jpg]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 MediaWiki:Vector.css 8 3 4 2024-02-08T04:27:28Z Ngyikp 2 add page background css text/css /* All CSS here will be loaded for users of the Vector skin */ body { background: #fff url('https://static.miraheze.org/chicorywiki/6/6c/Chicory_Wiki_page_background.jpg') no-repeat fixed 50% 50%; background-size: cover; } @media print { body { background: none; } } c96e6f951889e340d56254173416b53ce2d84a84 6 4 2024-02-08T04:33:59Z Ngyikp 2 change title font css text/css /* All CSS here will be loaded for users of the Vector skin */ body { background: #fff url('https://static.miraheze.org/chicorywiki/6/6c/Chicory_Wiki_page_background.jpg') no-repeat fixed 50% 50%; background-size: cover; } @media print { body { background: none; } } .mw-logo-wordmark { font-family: Domigorgon, sans-serif; } 46d8b42668c4fa178e269c6d7155878c83f78b81 7 6 2024-02-08T04:39:15Z Ngyikp 2 semi-transparent body background, expand custom font to more headings css text/css /* All CSS here will be loaded for users of the Vector skin */ body { background: #fff url('https://static.miraheze.org/chicorywiki/6/6c/Chicory_Wiki_page_background.jpg') no-repeat fixed 50% 50%; background-size: cover; } @media print { body { background: none; } } .mw-logo-wordmark { font-family: Domigorgon, sans-serif; } .mw-body h1 { font-family: Domigorgon, 'Linux Libertine', 'Georgia', 'Times', serif; } .vector-feature-zebra-design-disabled .vector-header-container, .vector-feature-zebra-design-disabled .mw-page-container { background-color: rgba(255, 255, 255, 0.97); } f3841556286817699c63522094d904f1ac4a3d9d 15 7 2024-02-08T06:03:45Z Ngyikp 2 fix legacy Vector css text/css /* All CSS here will be loaded for users of the Vector skin */ body { background: #fff url('https://static.miraheze.org/chicorywiki/6/6c/Chicory_Wiki_page_background.jpg') no-repeat fixed 50% 50%; background-size: cover; } @media print { body { background: none; } } .mw-logo-wordmark { font-family: Domigorgon, sans-serif; } .mw-body h1 { font-family: Domigorgon, 'Linux Libertine', 'Georgia', 'Times', serif; } .skin-vector-legacy #mw-panel, .skin-vector-legacy .mw-body, .vector-feature-zebra-design-disabled .vector-header-container, .vector-feature-zebra-design-disabled .mw-page-container, .skin-vector-legacy #footer { background-color: rgba(255, 255, 255, 0.97); } .skin-vector-legacy #footer { display: flex; flex-direction: column; } .skin-vector-legacy #footer-icons { align-self: flex-end; } 192585f3d32b4a00409c6e4e3f274d93e92c8f02 MediaWiki:Common.css 8 4 5 2024-02-08T04:31:40Z Ngyikp 2 Add Domigorgon font css text/css /* CSS placed here will be applied to all skins */ /* Original font from https://www.dafont.com/domigorgon.font, Domigorgon Plus modified by Legendknight 3000 */ @font-face { font-family: 'Domigorgon'; src: url('data:font/woff2;base64,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') format('woff2'); font-weight: normal; font-style: normal; } 7172abf5b1323af186f845fafe7310690932fe87 File:Chicory Wiki favicon.ico 6 5 8 2024-02-08T05:43:42Z Ngyikp 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 9 8 2024-02-08T05:44:09Z Ngyikp 2 Protected "[[File:Chicory Wiki favicon.ico]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 11 9 2024-02-08T05:52:52Z Ngyikp 2 Ngyikp uploaded a new version of [[File:Chicory Wiki favicon.ico]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Chicory game logo.png 6 6 10 2024-02-08T05:47:02Z Ngyikp 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 14 10 2024-02-08T05:54:19Z Ngyikp 2 Protected "[[File:Chicory game logo.png]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Chicory Wiki apple-touch-icon.png 6 7 12 2024-02-08T05:53:37Z Ngyikp 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 13 12 2024-02-08T05:54:10Z Ngyikp 2 Protected "[[File:Chicory Wiki apple-touch-icon.png]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Infobox character 10 8 16 2024-02-08T07:18:19Z Ngyikp 2 Infobox created with infobox builder. wikitext text/x-wiki <infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="species"> <label>Species</label> </data> <data source="location"> <label>Location</label> </data> <data source="gender"> <label>Gender</label> </data> <data source="pronouns"> <label>Pronouns</label> </data> <data source="occupation"> <label>Occupation</label> </data> <data source="relationships"> <label>Relationships</label> </data> <data source="style"> <label>Style</label> </data> </infobox> d64643f750a5bedef808aaacf1a48824934595c2 39 16 2024-02-08T07:33:29Z Ngyikp 2 add {{Documentation}} wikitext text/x-wiki <infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="species"> <label>Species</label> </data> <data source="location"> <label>Location</label> </data> <data source="gender"> <label>Gender</label> </data> <data source="pronouns"> <label>Pronouns</label> </data> <data source="occupation"> <label>Occupation</label> </data> <data source="relationships"> <label>Relationships</label> </data> <data source="style"> <label>Style</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> d4bc065aae256a3c997f3955051219b6fffc4a88 Template:Infobox character/doc 10 20 40 2024-02-08T07:38:48Z Ngyikp 2 add documentation wikitext text/x-wiki Sample infobox: {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |gender=Any (player's choice) |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} <pre> {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |gender=Any (player's choice) |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} </pre> d5d67f5a3b402589e4073fbb315f855312819ad5 Module:Documentation/styles.css 828 14 41 28 2024-02-08T07:40:35Z Ngyikp 2 Ngyikp changed the content model of the page [[Module:Documentation/styles.css]] from "plain text" to "Sanitized CSS" sanitized-css text/css .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } /* [[Category:Template stylesheets]] */ 5fb984fe8632dc068db16853a824c9f3d5175dd9 Pizza 0 21 42 2024-02-08T07:42:55Z Ngyikp 2 start page wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |gender=Any (player's choice) |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. [[Category:Characters]] 82edc3bbb08621f25a9700ef02a3d30e281eab2d 44 42 2024-02-08T07:44:55Z Ngyikp 2 fix visual editor compatibility wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |gender=Any (player's choice) |pronouns=Any (player's choice) |occupation=Wielder Janitor (formerly) Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. [[Category:Characters]] 81cb789947e37d61758822521cb6de2531bb2961 45 44 2024-02-08T07:45:59Z Ngyikp 2 Undo revision [[Special:Diff/44|44]] by [[Special:Contributions/Ngyikp|Ngyikp]] ([[User talk:Ngyikp|talk]]) ok visual editor is just bugged -_- wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |gender=Any (player's choice) |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. [[Category:Characters]] 82edc3bbb08621f25a9700ef02a3d30e281eab2d 75 45 2024-02-08T23:45:42Z Ngyikp 2 remove pronouns field, combined to gender field wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |gender=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. [[Category:Characters]] 4da86bbad8809477158e994642dd57768ff9ecdb 80 75 2024-02-08T23:55:49Z Ngyikp 2 change to pronouns field wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. [[Category:Characters]] 1f076c188d2d84b29a14083fa393f39b8938917a Category:Characters 14 22 43 2024-02-08T07:43:17Z Ngyikp 2 start page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Clementine 0 23 46 2024-02-08T07:51:34Z Ngyikp 2 start page wikitext text/x-wiki {{Infobox character |image=Clementine character.png |species=Dog |location=Potluck |gender=Female |pronouns=she/her |occupation=Art student |relationships=[[Pizza]] (sibling) }} '''Clementine''' is [[Pizza]]'s sister. == Trivia == * It's not possible to name yourself as Clementine through usual methods as the game will ask for your next favorite food, however nothing special happens if you did manage to call yourself Clementine. [[Category:Characters]] 8e147d33c84f2bc1d4a8c254e3594553864d437b 76 46 2024-02-08T23:45:58Z Ngyikp 2 combine pronouns field to gender wikitext text/x-wiki {{Infobox character |image=Clementine character.png |species=Dog |location=Potluck |gender=Female (she/her) |occupation=Art student |relationships=[[Pizza]] (sibling) }} '''Clementine''' is [[Pizza]]'s sister. == Trivia == * It's not possible to name yourself as Clementine through usual methods as the game will ask for your next favorite food, however nothing special happens if you did manage to call yourself Clementine. [[Category:Characters]] e2bd71d2445014a3ee718cbfee8865b1f0ac5063 81 76 2024-02-08T23:55:55Z Ngyikp 2 change to pronouns field wikitext text/x-wiki {{Infobox character |image=Clementine character.png |species=Dog |location=Potluck |pronouns=she/her |occupation=Art student |relationships=[[Pizza]] (sibling) }} '''Clementine''' is [[Pizza]]'s sister. == Trivia == * It's not possible to name yourself as Clementine through usual methods as the game will ask for your next favorite food, however nothing special happens if you did manage to call yourself Clementine. [[Category:Characters]] 237bc82e7dba107426af3b62452a702603d34980 File:Pizza character.png 6 24 47 2024-02-08T07:55:26Z Ngyikp 2 [[Pizza]] character wikitext text/x-wiki == Summary == [[Pizza]] character f8e2ceeb83b486213f56fbfc29a9ed9a82579244 File:Clementine character.png 6 25 48 2024-02-08T07:55:45Z Ngyikp 2 [[Clementine]] character wikitext text/x-wiki == Summary == [[Clementine]] character cb533b204575cb8d34fa9d53e63db22dd647954a Category:Locations 14 26 49 2024-02-08T08:01:53Z Ngyikp 2 start wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Main Page 0 1 50 1 2024-02-08T08:02:03Z Ngyikp 2 update main page wikitext text/x-wiki __NOTOC__ [[File:Chicory game logo.png|frameless|right|alt=Chicory: A Colorful Tale logo]] == Welcome to the Chicory: A Colorful Tale wiki! == We're still getting things set up, you can help out by creating and improving articles for the [[:Category:Characters|characters]], [[:Category:Locations|locations]] and story! Check out [[Special:AllPages]] for list of articles already created on this wiki. d75053dd307ed58c8383a7dba4f14ea0fb48a12f 53 50 2024-02-08T10:09:12Z Ngyikp 2 try to fix mobile wikitext text/x-wiki __NOTOC__ [[File:Chicory game logo.png|frameless|right|alt=Chicory: A Colorful Tale logo]] == Welcome to the Chicory: A Colorful Tale wiki! == We're still getting things set up, you can help out by creating and improving articles for the [[:Category:Characters|characters]], [[:Category:Locations|locations]] and story! Check out [[Special:AllPages]] for list of articles already created on this wiki. 3488c8d5d1882a6bca64117041792158ac1296e7 54 53 2024-02-08T10:17:42Z Ngyikp 2 try to fix mobile wikitext text/x-wiki __NOTOC__ [[File:Chicory game logo.png|150px|right|alt=Chicory: A Colorful Tale logo]] '''Welcome to the Chicory: A Colorful Tale wiki!''' We're still getting things set up, you can help out by creating and improving articles for the [[:Category:Characters|characters]], [[:Category:Locations|locations]] and story! Check out [[Special:AllPages]] for list of articles already created on this wiki. 03749b6b14003416a92312e4011cd79747000569 67 54 2024-02-08T22:24:36Z Ngyikp 2 expand to-help stuff wikitext text/x-wiki __NOTOC__ [[File:Chicory game logo.png|150px|right|alt=Chicory: A Colorful Tale logo]] '''Welcome to the Chicory: A Colorful Tale wiki!''' We're still getting things set up, you can help out by creating and improving articles for * [[:Category:Characters|Characters]] * [[:Category:Locations|Locations]] * Story/chapters * Quests, e.g. lost kids, art classes, mail delivery * [[:Category:Soundtrack albums|Soundtrack albums]] Check out [[Special:AllPages]] for list of articles already created on this wiki. 9cd2925270617563c0e896ac5d8e02c6fb0eb564 83 67 2024-02-08T23:59:06Z Ngyikp 2 add basic how to wikitext text/x-wiki __NOTOC__ [[File:Chicory game logo.png|150px|right|alt=Chicory: A Colorful Tale logo]] '''Welcome to the Chicory: A Colorful Tale wiki!''' We're still getting things set up, you can help out by creating and improving articles for * [[:Category:Characters|Characters]] * [[:Category:Locations|Locations]] * Story/chapters * Quests, e.g. lost kids, art classes, mail delivery * [[:Category:Soundtrack albums|Soundtrack albums]] Check out [[Special:AllPages]] for list of articles already created on this wiki. == Basic how to create a new character page == # Search for the article name # If the article doesn't exist, it will ask if you want to create the page, click the red link # Copy the source from another pre-existing character article, like [https://wiki.chicory.pizza/wiki/Clementine?action=edit Clementine] # Paste the above source to your new page, and start editing! To upload images, go to [[Special:Upload]] 662c3ef7ab0352d518fead4146df365f68285bf3 89 83 2024-02-09T00:09:54Z Cement 7 Just putting some broken links wikitext text/x-wiki __NOTOC__ [[File:Chicory game logo.png|150px|right|alt=Chicory: A Colorful Tale logo]] '''Welcome to the Chicory: A Colorful Tale wiki!''' We're still getting things set up, you can help out by creating and improving articles for * [[:Category:Characters|Characters]] * [[:Category:Locations|Locations]] * Story/[[chapters]] * [[Quests]], e.g. lost kids, art classes, mail delivery * [[:Category:Soundtrack albums|Soundtrack albums]] Check out [[Special:AllPages]] for list of articles already created on this wiki. == Basic how to create a new character page == # Search for the article name # If the article doesn't exist, it will ask if you want to create the page, click the red link # Copy the source from another pre-existing character article, like [https://wiki.chicory.pizza/wiki/Clementine?action=edit Clementine] # Paste the above source to your new page, and start editing! To upload images, go to [[Special:Upload]] 7ebbd11633ca7e55342321161699886a23c7d8ab MediaWiki:Sidebar 8 27 51 2024-02-08T08:08:16Z Ngyikp 2 add characters and locations, move 2 links to separate Wiki section wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** Category:Characters|Characters ** Category:Locations|Locations ** randompage-url|randompage * Wiki ** recentchanges-url|recentchanges ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES 251336ba377a536cb1eca451f585235209e8aabe 65 51 2024-02-08T12:16:30Z Ngyikp 2 add soundtrack albums wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** Category:Characters|Characters ** Category:Locations|Locations ** Category:Soundtrack albums|Soundtrack albums ** randompage-url|randompage * Wiki ** recentchanges-url|recentchanges ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES 01eedb5420ec1614f02d5560bdf25984f8109804 MediaWiki:Vector.css 8 3 52 15 2024-02-08T09:59:22Z Ngyikp 2 use domigorgon font on more places css text/css /* All CSS here will be loaded for users of the Vector skin */ body { background: #fff url('https://static.miraheze.org/chicorywiki/6/6c/Chicory_Wiki_page_background.jpg') no-repeat fixed 50% 50%; background-size: cover; } @media print { body { background: none; } } .mw-logo-wordmark, #pt-userpage-2, .portable-infobox .pi-title { font-family: Domigorgon, sans-serif; } .mw-body h1 { font-family: Domigorgon, 'Linux Libertine', 'Georgia', 'Times', serif; } .skin-vector-legacy #mw-panel, .skin-vector-legacy .mw-body, .vector-feature-zebra-design-disabled .vector-header-container, .vector-feature-zebra-design-disabled .mw-page-container, .skin-vector-legacy #footer { background-color: rgba(255, 255, 255, 0.97); } .skin-vector-legacy #footer { display: flex; flex-direction: column; } .skin-vector-legacy #footer-icons { align-self: flex-end; } bd8dcf2f92b7a25f55080d282d2de34da1d77860 Template:Infobox album 10 28 55 2024-02-08T11:01:17Z Ngyikp 2 Infobox created with infobox builder. wikitext text/x-wiki <infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="released"> <label>Released</label> </data> <data source="artist"> <label>Artist</label> </data> <data source="length"> <label>Length</label> </data> <data source="label"> <label>Label</label> </data> </infobox> 0f9964c5bcd48d0e9876c4a273d3376a55eaab6f 57 55 2024-02-08T11:03:07Z Ngyikp 2 add {{Documentation}} wikitext text/x-wiki <infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="released"> <label>Released</label> </data> <data source="artist"> <label>Artist</label> </data> <data source="length"> <label>Length</label> </data> <data source="label"> <label>Label</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 4916977afe222ef5090963b036833e9ac7ece90f File:Original Soundtrack album.png 6 30 58 2024-02-08T11:12:43Z Ngyikp 2 For [[Chicory: A Colorful Tale (Original Soundtrack)]] Collected from https://kuraine.notion.site/kuraine/RADICAL-DREAMLAND-62b6665ca4ce4c658b7f036e930551a3 wikitext text/x-wiki == Summary == For [[Chicory: A Colorful Tale (Original Soundtrack)]] Collected from https://kuraine.notion.site/kuraine/RADICAL-DREAMLAND-62b6665ca4ce4c658b7f036e930551a3 cd34db3060ca9cba929a1025159673efade3c24e Template:Infobox album/doc 10 31 59 2024-02-08T11:13:55Z Ngyikp 2 start documentation wikitext text/x-wiki Sample infobox: {{Infobox album |image=Original Soundtrack album.png |released=June 10, 2021 |artist=[[Lena Raine]] |length=2 hours 36 minutes |label=Radical Dreamland }} <pre> {{Infobox album |image=Original Soundtrack album.png |released=June 10, 2021 |artist=[[Lena Raine]] |length=2 hours 36 minutes |label=Radical Dreamland }} </pre> 4c60a33ca60ccd54325aa031684d9e653647216a Chicory: A Colorful Tale (Original Soundtrack) 0 32 60 2024-02-08T11:17:38Z Ngyikp 2 start page wikitext text/x-wiki {{Infobox album |image=Original Soundtrack album.png |released=June 10, 2021 |artist=[[Lena Raine]] |length=2 hours 36 minutes |label=Radical Dreamland }} == Tracklist == # Blank Canvas # A Colorful Tale # The Town of Luncheon # Supper Woods # Eyes in the Darkness # Not Anymore # Potluck # Art Academy # Appie Foothills # Elevenses # Wielder Temple # Probably Ancient Evil # A Wielder's Duty # Just Like You # Sips River # Gulp Swamp # Mistake # Erase You # Seeds of Doubt # Messed Up Person # Letter From the Queen # Dinners, the Big City # Clementine # Teatime Meadows # Caves # Grub Deep # Her Wretched Utterances # Feast # Alone With Myself # Nobody # uoY mA I # Abandon Me # Chicory's Theme # Banquet Rainforest # Dessert Mountain # Song of the Wielders # Simmer Springs # Turnabout Squeeze # Spoons Island # More Than Myself # Color Lab # Calling Home # Brekkie # Brunch Canyon # Buried Deep # MONSTER # She's Gone # The Wielders' Legacy # The Dark Forest # You're Not Real # Just Reach Out # Something New # Once More Into the Dark # History Against Us # Do the Impossible # Change Everything # The Mountain Top # The Tale End # A Fresh Start # This Colorful World == External links == * [https://medium.com/@kuraine/composing-for-chicory-motifs-memories-9d7351555694 Full liner notes] * [https://radicaldreamland.bandcamp.com/album/chicory-a-colorful-tale-original-soundtrack Bandcamp] * [https://open.spotify.com/album/6DdR2sAfxq6qhsYhVIa83Q Spotify] * [https://music.apple.com/sa/album/chicory-a-colorful-tale-original-soundtrack/1571468951 Apple Music] [[Category:Soundtrack albums]] f167c767d11de448094b0e463353b0961c03d34b 61 60 2024-02-08T11:33:14Z Ngyikp 2 add note for Banquet Rainforest, not a banquest :boowomp: wikitext text/x-wiki {{Infobox album |image=Original Soundtrack album.png |released=June 10, 2021 |artist=[[Lena Raine]] |length=2 hours 36 minutes |label=Radical Dreamland }} == Tracklist == # Blank Canvas # A Colorful Tale # The Town of Luncheon # Supper Woods # Eyes in the Darkness # Not Anymore # Potluck # Art Academy # Appie Foothills # Elevenses # Wielder Temple # Probably Ancient Evil # A Wielder's Duty # Just Like You # Sips River # Gulp Swamp # Mistake # Erase You # Seeds of Doubt # Messed Up Person # Letter From the Queen # Dinners, the Big City # Clementine # Teatime Meadows # Caves # Grub Deep # Her Wretched Utterances # Feast # Alone With Myself # Nobody # uoY mA I # Abandon Me # Chicory's Theme # Banquet Rainforest<ref group="note">Misspelled as Banquest Rainforest on various streaming services due to a typo https://twitter.com/kuraine/status/1405221495488405507</ref> # Dessert Mountain # Song of the Wielders # Simmer Springs # Turnabout Squeeze # Spoons Island # More Than Myself # Color Lab # Calling Home # Brekkie # Brunch Canyon # Buried Deep # MONSTER # She's Gone # The Wielders' Legacy # The Dark Forest # You're Not Real # Just Reach Out # Something New # Once More Into the Dark # History Against Us # Do the Impossible # Change Everything # The Mountain Top # The Tale End # A Fresh Start # This Colorful World == Notes == <references group="note" /> == External links == * [https://medium.com/@kuraine/composing-for-chicory-motifs-memories-9d7351555694 Full liner notes] * [https://radicaldreamland.bandcamp.com/album/chicory-a-colorful-tale-original-soundtrack Bandcamp] * [https://open.spotify.com/album/6DdR2sAfxq6qhsYhVIa83Q Spotify] * [https://music.apple.com/sa/album/chicory-a-colorful-tale-original-soundtrack/1571468951 Apple Music] [[Category:Soundtrack albums]] 3bc56ad3027f227edde8f0ac0bc7efafda78072d Category:Soundtrack albums 14 33 62 2024-02-08T11:34:07Z Ngyikp 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:The Sounds of Picnic Province album.png 6 34 63 2024-02-08T12:13:43Z Ngyikp 2 For [[Chicory: The Sounds of Picnic Province]] Collected from https://kuraine.notion.site/kuraine/RADICAL-DREAMLAND-62b6665ca4ce4c658b7f036e930551a3 wikitext text/x-wiki == Summary == For [[Chicory: The Sounds of Picnic Province]] Collected from https://kuraine.notion.site/kuraine/RADICAL-DREAMLAND-62b6665ca4ce4c658b7f036e930551a3 e91187dd2ff07d7fda1a89d6691a5c725d9988a5 Chicory: The Sounds of Picnic Province 0 35 64 2024-02-08T12:15:30Z Ngyikp 2 start page wikitext text/x-wiki {{Infobox album |image=The Sounds of Picnic Province album.png |released=June 24, 2021 |artist=[[Lena Raine]] |length=43 minutes |label=Radical Dreamland }} == Tracklist == # The Outskirts of Luncheon # Lost in Supper Woods # Peering into Potluck # A Stroll Through Appie Foothills # Indoors at Elevenses # Dipping Your Feet in Sips River # Stuck in Gulp Swamp # Lingering With Seeds of Doubt # The Alleys and Rooftops of Dinners # The Slice Shop # Singing in Teatime Meadows # Buzzing Around Feast # Under an Umbrella in Banquet Rainforest # The View From Dessert Mountain # Sleuthing Around Simmer Springs # Soaking on Spoons Island # Watching the Waves at Brekkie # The Distant Dark Forest # Coming Home to Luncheon == External links == * [https://radicaldreamland.bandcamp.com/album/chicory-the-sounds-of-picnic-province Bandcamp] * [https://open.spotify.com/album/7fIiMj5sBhQyvWX65Kcz6u Spotify] * [https://music.apple.com/us/album/chicory-the-sounds-of-picnic-province/1581532328 Apple Music] [[Category:Soundtrack albums]] e55de2c93d29568844d3bfae3759f8521bdb5c5f Luncheon 0 36 66 2024-02-08T12:43:32Z Ngyikp 2 start page wikitext text/x-wiki '''Luncheon''' is the first major location of the game and features the [[Wielder Tower]] and [[Pizza]]'s House. [[Category:Locations]] 8172cfc458bf44fedce5c98e3629b013813b1f98 71 66 2024-02-08T23:42:36Z Cement 7 Named other buildings located in Luncheon, inserted an image of the 4 colours of Luncheon after beating the game, and wrote a small and imcomplete paragraph about Luncheon's colour palette. wikitext text/x-wiki '''Luncheon''' is the first major location of the game and features the [[Wielder Tower]] and [[Pizza]]'s House. Other notable buildings in [[Luncheon]] include: [[Cafe]] [[Lost Kid Daycare]] [[Hat Maker]]/[[Garlic]]'s house [[File:Luncheon colours.png|alt=4 coloured circles are beside eachother. From left to right, the first one is a light-green, the second is salmon coloured, the third is blue, and the right-most colour is cyan. The colours are slightly brighter than the colours from before beating the game.|left|thumb|The 4 colours available in Luncheon after beating the game.]] The colour Palette of [[Luncheon]] changes over the course of the game. Going from ''[placeholder]'' through the first 9 [[chapters]], to ''[placeholder]'' in the 10th chapter, during the [[corruption]], and to a brighter version of the original colours after beating the game. [[Category:Locations]] 91bcc9c5f9c160e53cddcad04b5e73530f50452c 82 71 2024-02-08T23:56:20Z Cement 7 A paragraph listing a̶l̶l̶ ̶t̶h̶e̶ ̶p̶a̶g̶e̶s̶ ̶w̶e̶ ̶n̶e̶e̶d̶ ̶t̶o̶ ̶m̶a̶k̶e̶ the locations that connect directly to Luncheon. wikitext text/x-wiki '''Luncheon''' is the first major location of the game and features the [[Wielder Tower]] and [[Pizza]]'s House. Other notable buildings in [[Luncheon]] include: [[Cafe]] [[Lost Kid Daycare]] [[Hat Maker]]/[[Garlic]]'s house Besides that, Luncheon is directly connected with the locations of [[Gulp Swamp]], [[Nibble Tunnel]], [[Sips River]], [[Supper Woods]], [[Teatime Meadows]] and [[Yum Caves]]. [[File:Luncheon colours.png|alt=4 coloured circles are beside eachother. From left to right, the first one is a light-green, the second is salmon coloured, the third is blue, and the right-most colour is cyan. The colours are slightly brighter than the colours from before beating the game.|left|thumb|The 4 colours available in Luncheon after beating the game.]] The colour Palette of [[Luncheon]] changes over the course of the game. Going from ''[placeholder]'' through the first 9 [[chapters]], to ''[placeholder]'' in the 10th chapter, during the [[corruption]], and finally to a brighter version of the original colours after beating the game. [[Category:Locations]] 7f584d28c4a06dc8afcb83e0a625f38d82f1ae2c 85 82 2024-02-09T00:02:51Z Cement 7 Inserted a list of the residents of Luncheon. Godspeed. wikitext text/x-wiki '''Luncheon''' is the first major location of the game and features the [[Wielder Tower]] and [[Pizza]]'s House. Other notable features in [[Luncheon]] include: * [[Cafe]] * [[Lost Kid Daycare]] * [[Hat Maker]]/[[Garlic]]'s house * Color Map Besides that, Luncheon is directly connected with the locations of [[Gulp Swamp]], [[Nibble Tunnel]], [[Sips River]], [[Supper Woods]], [[Teatime Meadows]] and [[Yum Caves]]. [[File:Luncheon colours.png|alt=4 coloured circles are beside eachother. From left to right, the first one is a light-green, the second is salmon coloured, the third is blue, and the right-most colour is cyan. The colours are slightly brighter than the colours from before beating the game.|left|thumb|The 4 colours available in Luncheon after beating the game.]] The colour Palette of [[Luncheon]] changes over the course of the game. Going from ''[placeholder]'' through the first 9 [[chapters]], to ''[placeholder]'' in the 10th chapter, during the [[corruption]], and finally to a brighter version of the original colours after beating the game. === Residents: === * [[Basil]] * [[Beans]] * [[Chicory (character)|Chicory]] * [[Cola]] * [[Ginger]] * [[Lemon]] * [[Macaroon]] * [[Pea]] * [[Pepper]] (former [[Dinners]] resident) * [[Pickle]] * [[Pumpernickel]] [[Category:Locations]] e06853232efe6e1256693864acab29758a81886c File:Luncheon colours.png 6 38 69 2024-02-08T23:18:08Z Cement 7 wikitext text/x-wiki Demonstration of Luncheon's four colours. 633361756e8eae0ee74e251673c4ff35c868e04f 70 69 2024-02-08T23:24:19Z Cement 7 I just discovered that there's differences in colours before and after beating the game. wikitext text/x-wiki Demonstration of Luncheon's four colours after beating the game. 940c25d4e2fd1993ed69d8696c3f44c3c879e9f1 Template:Infobox character 10 8 72 39 2024-02-08T23:44:34Z Ngyikp 2 remove pronouns, will still be listed on gender wikitext text/x-wiki <infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="species"> <label>Species</label> </data> <data source="location"> <label>Location</label> </data> <data source="gender"> <label>Gender</label> </data> <data source="occupation"> <label>Occupation</label> </data> <data source="relationships"> <label>Relationships</label> </data> <data source="style"> <label>Style</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 84b809cb2e75202b3643906fcd0cff4fc08dfba8 78 72 2024-02-08T23:51:36Z Chevreau 8 it's faster to ignore gender wikitext text/x-wiki <infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="species"> <label>Species</label> </data> <data source="location"> <label>Location</label> </data> <data source="pronouns"> <label>Pronouns</label> </data> <data source="occupation"> <label>Occupation</label> </data> <data source="relationships"> <label>Relationships</label> </data> <data source="style"> <label>Style</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> ce35ab8916c827b0fe8f7d059427b69591f6324f Template:Infobox character/doc 10 20 74 40 2024-02-08T23:45:31Z Ngyikp 2 remove pronouns field, combine to gender field wikitext text/x-wiki Sample infobox: {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |gender=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} <pre> {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |gender=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} </pre> e1abb619b6bd55de990dfeb86489db05d9adc462 86 74 2024-02-09T00:04:16Z Ngyikp 2 change to pronouns field wikitext text/x-wiki Sample infobox: {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} <pre> {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} </pre> 23fb104e0b5754ee3f9ec13ed51f20386a38dfe6 File:Miso.png 6 39 77 2024-02-08T23:49:11Z Chevreau 8 wikitext text/x-wiki Miso Character Sprite a25568bfbc4d5a3635b4ff9511d64a6adafc38d8 Miso 0 40 79 2024-02-08T23:52:46Z Chevreau 8 Created page with "{{Infobox character |title=Miso |image=Miso.png |species=Owl |location=Potluck |pronouns=She/Her }} '''Miso''' is a bird or something == Dialogue == sup pizza u r my babysitter" wikitext text/x-wiki {{Infobox character |title=Miso |image=Miso.png |species=Owl |location=Potluck |pronouns=She/Her }} '''Miso''' is a bird or something == Dialogue == sup pizza u r my babysitter 8aab866653395b8361f72b25c5faff2fab21e570 90 79 2024-02-09T00:40:50Z Chevreau 8 wikitext text/x-wiki {{Infobox character |title=Miso |image=Miso.png |species=Owl |location=Potluck |pronouns=She/Her }} '''Miso''' is a bird or something == Dialogue == sup pizza u r my babysitter [[Category:Characters]] 5d7793d60e9ab9c37d11795583384f128f3e8f5f Curry 0 41 84 2024-02-08T23:59:58Z Pizza the Wielder 6 Created page with "{{Infobox character |image= |species=Dog |location=Brekkie |gender=Male |pronouns=he/him |occupation=Sweets Shop Owner }} Curry provides a side-quest for the player having the player design a custom treat. == Trivia == * When the player achieves 100% game completion Curry will call the player and visit the players house. * Curry is the Chicorysona of developer Greg Lobanov * Curry has special lines if the player has the same name as Curry. [[Category:Characters]]" wikitext text/x-wiki {{Infobox character |image= |species=Dog |location=Brekkie |gender=Male |pronouns=he/him |occupation=Sweets Shop Owner }} Curry provides a side-quest for the player having the player design a custom treat. == Trivia == * When the player achieves 100% game completion Curry will call the player and visit the players house. * Curry is the Chicorysona of developer Greg Lobanov * Curry has special lines if the player has the same name as Curry. [[Category:Characters]] e6b60fba1dcb73ac65ed9e0233428afc7d18795a 88 84 2024-02-09T00:07:57Z Ngyikp 2 add image wikitext text/x-wiki {{Infobox character |image=Curry character.png |species=Dog |location=Brekkie |gender=Male |pronouns=he/him |occupation=Sweets Shop Owner }} Curry provides a side-quest for the player having the player design a custom treat. == Trivia == * When the player achieves 100% game completion, Curry will call the player and visit the players house. * Curry is the Chicorysona of developer Greg Lobanov. * Curry has special lines if the player has the same name as Curry. [[Category:Characters]] 071265f4a7dc9d5c2eda604b9904f7db5482eb80 File:Curry character.png 6 42 87 2024-02-09T00:07:25Z Ngyikp 2 [[Curry]] character wikitext text/x-wiki == Summary == [[Curry]] character fd07830c1cbede4485400985b19b676c23e1c0e5 Quests 0 43 91 2024-02-09T01:23:23Z Cement 7 I'll finish this later wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats's requests]] * [[Beans's lost kittens]] 7f83ab925a8c48cc8ac8c39c789b656cbf684edb Beans's lost kittens 0 44 92 2024-02-09T01:37:51Z Cement 7 Quick (a bit too quick) description of the quest and pointed out 1 (one) location of lose kitten wikitext text/x-wiki In Luncheon, you are able to talk to [[Beans]], who informs you that her kids have run off and hid somewhere. It's possible to know where the lost kittens are for the object they're hidden in shakes periodically. To take them out of their hiding spot, you just have to paint the spots a few times in quick succession. === Locations: === ==== Luncheon: ==== * In the same screen as Beans's house, the tree to the upwards and to the left of her house. The kitten is hidden in the leaves. 742568b6df9c70f430c4ba63b66d74ae8b2ca46f File:Grapesoda.jpg 6 45 93 2024-02-09T02:20:55Z SunsetCorvid 9 wikitext text/x-wiki Grape Soda is SunsetCorvid's Drawdog-sona. He is a purple, long-furred, dog with deep purple horns and a long, fluffy, tail. He adorns blue fingerless gloves, a grey hoodie, and brown, baggy shorts. ed1a4ccb44fe9576a11fe1db40830923139b0018 Clothes 0 46 94 2024-02-09T02:31:26Z Chevreau 8 Created page with "dog wear cute clothing!!! [[File:Pizza character.png|thumb]]" wikitext text/x-wiki dog wear cute clothing!!! [[File:Pizza character.png|thumb]] 6cf2486e65486ee5d2ca288bfcb02e611ce8a33d 96 94 2024-02-09T02:38:12Z Chevreau 8 wikitext text/x-wiki dog wear cute clothing!!! [[File:Pizza character.png|thumb]] {| class="wikitable" |+ |Bandana |Gift in Luncheon (-4, 2, -2) |- |Sun hat |Oats |- |Sunglasses |Gift in Potluck (-4, 2, 1) |} 53d815a67e6549da1e142e2e8010da5cc419f24c User:SunsetCorvid 2 47 95 2024-02-09T02:32:49Z SunsetCorvid 9 Added details about myself :] wikitext text/x-wiki Hello, hello! I'm Miles Corvid, AKA SunsetCorvid!! [[File:Grapesoda.jpg|thumb|Grape Soda]] My pronouns are He/Him e887656ae8a406c2bbc7d3dde29b9adfd079a076 Quests 0 43 97 91 2024-02-09T02:41:06Z Cement 7 Put the chapter 2 quests wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats's requests]] * [[Beans's lost kittens]] === Chapter 2: === * [[Art Academy's paintings]] * [[Olive & Achiote request]] * [[Holey shop logo]] === Chapter 3: === === Chapter 4: === e3ba5567491d66b85d328e80c1bceb6a0949e062 99 97 2024-02-09T02:48:10Z Cement 7 Counting potato wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats's requests]] * [[Beans's lost kittens]] === Chapter 2: === * [[Art Academy's paintings]] * [[Olive & Achiote request]] * [[Potato custom brush]] * [[Holey shop logo]] === Chapter 3: === === Chapter 4: === 8e7d4084b2251c17e226c34f281f759785e32b44 104 99 2024-02-09T03:20:05Z Cement 7 Inserted a few things. wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive & Achiote request]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === bc9c8ccc86bfbbb1dd867cd9fee6d8114bdb2a65 120 104 2024-02-09T05:14:25Z Cement 7 fix one broken link (the link is still broken) wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === ce5e7d9e3e689e0e3b3bb5bcead8aee9aa5f913d File:ChicoryIdle.png 6 48 98 2024-02-09T02:47:01Z SunsetCorvid 9 An idle pose for Chicory. wikitext text/x-wiki == Summary == An idle pose for Chicory. 1799be46ffe98fd35eda7038f28eeaa0a8dd2806 Chicory 0 49 100 2024-02-09T02:50:26Z SunsetCorvid 9 Added Chicory. Will be editing with more info. wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships= |style="Colorful" }} [[Category:Characters]] 8bc3ce4334b1d052129210a355d16fda96b41d25 101 100 2024-02-09T02:53:31Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships= |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of Chicory: A Colorful Tale. [[Category:Characters]] 1089ea3ac410600b1a589df4731c2bc0ca78f9aa 102 101 2024-02-09T02:55:21Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale.]] [[Category:Characters]] 3ad0fe4542b36a20a6ec76c90304a3ff1261db59 126 102 2024-02-09T05:36:28Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale]]. [[Category:Characters]] c4f51ec9575e32741e4a1152341929434d7db826 132 126 2024-02-09T11:28:01Z SunsetCorvid 9 Added an appearance section to Chicory's page. wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend)<br>[[Blackberry]] (Former mentor) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale]]. == Appearance == Within her self-portrait, Chicory is depicted as a brown hare with a pink nose. She adorns a purple cloak over a black shirt and teal pants. She wears gold/orange leggings, and a blue to gold band around the base of her ears.<br>In game, she appears pretty much the same, but is lacking color like everyone else. The player is free to color her as they wish.<br>When her cloak is removed, it is shown she wears suspenders. [[Category:Characters]] 15309cd6e77c1ac8941ced534c8375126015ccf2 135 132 2024-02-09T11:35:11Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend)<br>[[Blackberry]] (Former mentor) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale]]. == Appearance == Within her self-portrait, Chicory is depicted as a brown hare with a pink nose. She adorns a purple cloak over a black shirt and teal pants. She wears gold/orange <ref>leggings</ref>, and a blue to gold band around the base of her ears.<br>In game, she appears pretty much the same, but is lacking color like everyone else. The player is free to color her as they wish.<br>When her cloak is removed, it is shown she wears suspenders. [[Category:Characters]] 962757c7b66961bd8e23aaec07b103053c965d14 136 135 2024-02-09T11:36:34Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend)<br>[[Blackberry]] (Former mentor) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale]]. == Appearance == Within her self-portrait, Chicory is depicted as a brown hare with a pink nose. She adorns a purple cloak over a black shirt and teal pants. She wears gold/orange <ref>https://discordapp.com/channels/1104488653624975510/1105282258090332200/1108436882817294457</ref>, and a blue to gold band around the base of her ears.<br>In game, she appears pretty much the same, but is lacking color like everyone else. The player is free to color her as they wish.<br>When her cloak is removed, it is shown she wears suspenders. [[Category:Characters]] 7f938015beb53bc6f3e9d4ffd0d5a062db64305a 138 136 2024-02-09T11:42:02Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend)<br>[[Blackberry]] (Former mentor) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale]]. == Appearance == Within her self-portrait, Chicory is depicted as a brown hare with a pink nose. She adorns a purple cloak over a black shirt and teal pants. She wears gold/orange leggings<ref>Confirmation that Chicory is wearing leggings.</ref>, and a blue to gold band around the base of her ears.<br>In game, she appears pretty much the same, but is lacking color like everyone else. The player is free to color her as they wish.<br>When her cloak is removed, it is shown she wears suspenders. == References == <references /> [[Category:Characters]] 9240cc365f3076bb2484e4cb1ad8a1558a29df71 139 138 2024-02-09T11:42:39Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend)<br>[[Blackberry]] (Former mentor) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale]]. == Appearance == Within her self-portrait, Chicory is depicted as a brown hare with a pink nose. She adorns a purple cloak over a black shirt and teal pants. She wears gold/orange leggings<ref>[[:File:Chicory's leggings.jpg|Confirmation that Chicory is wearing leggings.]]</ref>, and a blue to gold band around the base of her ears.<br>In game, she appears pretty much the same, but is lacking color like everyone else. The player is free to color her as they wish.<br>When her cloak is removed, it is shown she wears suspenders. == References == <references /> [[Category:Characters]] 614b1350f2bb5b99fd75c2d521a8c1fe940ecb58 140 139 2024-02-09T11:49:06Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend)<br>[[Blackberry]] (Former mentor) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale]]. == Appearance == Within her self-portrait, Chicory is depicted as a brown hare with a pink nose. She adorns a purple cloak over a black shirt and teal pants. She wears gold/orange leggings<ref>[[:File:Chicory's leggings.jpg|Confirmation that Chicory is wearing leggings.]]</ref>, and a blue to gold band around the base of her ears.<br>In game, she appears pretty much the same, but is lacking color like everyone else. The player is free to color her as they wish.<br>When her cloak is removed, it is shown she wears suspenders. == Trivia == *Chicory's identifying instrument is the clarinet. == References == <references /> [[Category:Characters]] 351204574a6af33475d34a8f2e89a32c5cd01357 Pizza 0 21 103 80 2024-02-09T03:09:10Z 112.203.131.228 0 adding name snenangians wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. In-game, they will be named after the player’s favorite food, but the default name when selecting ''I’m not sure…'' is Pizza. [[Category:Characters]] 6405adc2093858a7cd4cc665aca26afbcd66e084 File:Kitten Luncheon 1.png 6 50 105 2024-02-09T03:24:13Z Cement 7 wikitext text/x-wiki The kitten right in front of Beans house 5d28cfc1021125272b8c9ac635be92c72e997661 File:Kitten Luncheon 2.png 6 51 106 2024-02-09T03:41:16Z Cement 7 wikitext text/x-wiki Kitten found a screen up and to the right of the entrance of Yum Cave, in Luncheon 01b0ae9167f01eb99052db03d69b31e17f2bb129 File:Kitten Luncheon 3.png 6 52 107 2024-02-09T03:43:03Z Cement 7 wikitext text/x-wiki Kitten found outside of Basil's house. db38b8e2dcfed8704ecd92b1f364ea46e2444c02 File:Kitten Potluck 1.png 6 53 108 2024-02-09T03:59:55Z Cement 7 wikitext text/x-wiki Kitten in front of Turnip & Grits', Fritter & Granita's and Custard's houses fed34de8186df0dd0cdea904f49cdeafb3934309 File:Kitten Potluck 2.png 6 54 109 2024-02-09T04:01:39Z Cement 7 wikitext text/x-wiki Kitten 1 screen to the right of Barley's house ede2b1c10b819b5fc16de9d57f1be8f37638879d File:Kitten Potluck 3.png 6 55 110 2024-02-09T04:04:44Z Cement 7 wikitext text/x-wiki Kitten found in front of the Painter's Temple cfc44f30d2745a7be2448495b2e9a272c64a4cb8 File:Hat Ahoy.png 6 56 111 2024-02-09T04:57:03Z Chevreau 8 Ahoy Hat wikitext text/x-wiki == Summary == Ahoy Hat 6bf2fcfce65816ac2bc2c50f7f0d84fb471fbe98 File:Big Gift Sips River Bucket Tool.png 6 57 112 2024-02-09T05:02:00Z Cement 7 wikitext text/x-wiki Big Gift from the margins of Sips River 21f153a14d24f4fcd81d800ee35352a19fe3f78a 113 112 2024-02-09T05:05:06Z Cement 7 wikitext text/x-wiki Big Gift from the margins of Sips River. It contains the Bucket tool. a2809dd97e5ef18dd1b8898fba22211de7efd92e File:Gift Luncheon Beanie.png 6 58 114 2024-02-09T05:06:26Z Cement 7 wikitext text/x-wiki Location of gift containing Beanie. One scene up and one and to the right of Yum Cave's entrance in Luncheon. e2391acf8737ed348ef5f96f346c2c076e7a25b9 File:Gift Luncheon Pocket Jacket.png 6 59 115 2024-02-09T05:07:07Z Cement 7 wikitext text/x-wiki Gift containing Pocket Jacket behind Pea's and Ginger's house 7c9a71b6c452f11c098b2f1abf23c361c77eb3cc File:Gift Painter's Temple Beret.png 6 60 116 2024-02-09T05:09:08Z Cement 7 wikitext text/x-wiki Location you need to pass to access the gift containing the Beret. It's needed to blow up a bubble in that spot to create the hole. d5f519588d851d6d44cdbee9ed274df30235e57e File:Gift Painter's Temple Black Tee.png 6 61 117 2024-02-09T05:10:25Z Cement 7 wikitext text/x-wiki Location you need to blow up a bubble to gain access to gift containing Black Tee. e93ebe78b804f07f4a2595c172b9a12906957425 File:Gift Nibble Tunnel Black Dress.png 6 62 118 2024-02-09T05:11:27Z Cement 7 wikitext text/x-wiki Location in Nibble Tunnel containing Black dress (It's possible I might have to retake this screenshot) 3092de888e69fb2b0c37cf7e50dc8d34f9e8bb9e File:Gift Yum Cave Round Glasses.png 6 63 119 2024-02-09T05:12:14Z Cement 7 wikitext text/x-wiki Location of gift containing Round Glasses. The gift is highlighted in yellow. Yum Cave 1a9b970fef3fca435113f3f47e3769c0447581b9 File:Beans.png 6 64 121 2024-02-09T05:28:37Z SunsetCorvid 9 Beans from Chicory: A Colorful Tale wikitext text/x-wiki == Summary == Beans from Chicory: A Colorful Tale 538aca407a4a29b396ef475e25619ce54f24b40c Beans 0 65 122 2024-02-09T05:31:43Z SunsetCorvid 9 Created page with "{{Infobox character |image=Beans.png |species=Domestic Cat |location=Luncheon |pronouns=She/Her |occupation=Daycare Owner |relationships=[[Pepper]] (Romantic Partner) }} [[Category:Characters]]" wikitext text/x-wiki {{Infobox character |image=Beans.png |species=Domestic Cat |location=Luncheon |pronouns=She/Her |occupation=Daycare Owner |relationships=[[Pepper]] (Romantic Partner) }} [[Category:Characters]] b9934e38689b092f9d638f46fac5aa185b3d423b 123 122 2024-02-09T05:34:45Z SunsetCorvid 9 Added to Beans' page. wikitext text/x-wiki {{Infobox character |image=Beans.png |species=Domestic Cat |location=Luncheon |pronouns=She/Her |occupation=Daycare Owner |relationships=[[Pepper]] (Romantic Partner) }} '''Beans''' is a minor character within ''Chicory: A Colorful Tale.'' She runs the '''Lost Kids Daycare''' with her partner '''Pepper''' in ''Luncheon.'' [[Category:Characters]] 6f5fdfdbbd33d96a2bc66456ea1f20671ba151aa 124 123 2024-02-09T05:35:14Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |image=Beans.png |species=Domestic Cat |location=Luncheon |pronouns=She/Her |occupation=Daycare Owner |relationships=[[Pepper]] (Romantic Partner) }} '''Beans''' is a minor character within ''Chicory: A Colorful Tale.'' She runs the '''Lost Kids Daycare''' with her partner [[Pepper]] in ''Luncheon.'' [[Category:Characters]] 5d45f4ee5e1d2af6df43e885c0b6c4220964d5e8 125 124 2024-02-09T05:36:04Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |image=Beans.png |species=Domestic Cat |location=Luncheon |pronouns=She/Her |occupation=Daycare Owner |relationships=[[Pepper]] (Romantic Partner) }} '''Beans''' is a minor character within [[Chicory: A Colorful Tale]]. She runs the '''Lost Kids Daycare''' with her partner [[Pepper]] in ''Luncheon.'' [[Category:Characters]] 3d2fc5ba654ead6a6b9bf70bd4880c4e9b290265 Clementine 0 23 127 81 2024-02-09T10:56:40Z Prynmatic 11 wikitext text/x-wiki {{Infobox character |image=Clementine character.png |species=Dog |location=Potluck |pronouns=she/her |occupation=Art student |relationships=[[Pizza]] (sibling) }} '''Clementine''' is [[Pizza]]'s younger sister. == Trivia == * It is not possible to name the player Clementine through usual methods, as when attempting to do so, the game will ask for the player’s next favorite food instead. However, nothing special happens if one does manage to call themself Clementine. [[Category:Characters]] 5a28d64c9b284fb1f347b855657867a4a256c349 141 127 2024-02-09T11:50:49Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |image=Clementine character.png |species=Dog |location=Potluck |pronouns=She/Her |occupation=Art student |relationships=[[Pizza]] (sibling) }} '''Clementine''' is [[Pizza]]'s younger sister. == Trivia == * It is not possible to name the player Clementine through usual methods, as when attempting to do so, the game will ask for the player’s next favorite food instead. However, nothing special happens if one does manage to call themself Clementine. [[Category:Characters]] 51af71cd96a6345062c8ff1dfce974342618d363 File:Pickle chicory.png 6 66 128 2024-02-09T11:00:45Z Prynmatic 11 wikitext text/x-wiki pickle a4561d3eb3b70a05c27c8ecfe455b03bd467781c Pickle 0 67 129 2024-02-09T11:12:01Z Prynmatic 11 Created page with "{{Infobox character |image=Pickle chicory.png |species=Fennec fox |location=Luncheon |pronouns=they/them |occupation= |relationships=[[Onion]] (pen pal) }} '''Pickle''' is an NPC in Luncheon. Their dialogue uses a unique font ([https://www.dafont.com/five-cents.font Five Cents], whereas most characters use [https://www.dafont.com/domigorgon.font Domigorgon]) and is in all-lowercase, as well as using shorthands such as “lol,” “omg,” and “u” in place of “you..." wikitext text/x-wiki {{Infobox character |image=Pickle chicory.png |species=Fennec fox |location=Luncheon |pronouns=they/them |occupation= |relationships=[[Onion]] (pen pal) }} '''Pickle''' is an NPC in Luncheon. Their dialogue uses a unique font ([https://www.dafont.com/five-cents.font Five Cents], whereas most characters use [https://www.dafont.com/domigorgon.font Domigorgon]) and is in all-lowercase, as well as using shorthands such as “lol,” “omg,” and “u” in place of “you.” == Trivia == * Pickle is one of a few NPCs to have unique dialogue changes when the player chooses the same name as them, referring to the player as “other pickle.” ** Among these NPCs, Pickle is the only one who isn’t a developer character. [[Category:Characters]] e7b811ef22eb18112b2a3e20a326ab2e4e77395f 133 129 2024-02-09T11:29:07Z Prynmatic 11 wikitext text/x-wiki {{Infobox character |image=Pickle chicory.png |species=Fennec fox |location=Luncheon |pronouns=they/them |occupation= |relationships=[[Onion]] (pen pal) }} '''Pickle''' is an NPC in Luncheon. Their dialogue uses a unique font ([https://www.dafont.com/five-cents.font Five Cents], whereas most characters use [https://www.dafont.com/domigorgon.font Domigorgon]) and is in all-lowercase, as well as using shorthands such as “lol,” “omg,” and “u” in place of “you.” Pickle asks the player if they can borrow the Brush, and, if the player allows them, uses it to draw their face on the floor. They will be sad if the player then draws over their drawing. == Trivia == * Pickle is one of a few NPCs to have unique dialogue changes when the player chooses the same name as them, referring to the player as “other pickle.” ** Among these NPCs, Pickle is the only one who isn’t a developer character. [[Category:Characters]] daf67619afa7c69f1b65a9c45546c4350917d000 134 133 2024-02-09T11:33:17Z Prynmatic 11 wikitext text/x-wiki {{Infobox character |image=Pickle chicory.png |species=Fennec fox |location=Luncheon |pronouns=they/them |occupation= |relationships=[[Onion]] (pen pal) }} '''Pickle''' is an NPC in Luncheon. Their dialogue uses a unique font ([https://www.dafont.com/five-cents.font Five Cents], whereas most characters use [https://www.dafont.com/domigorgon.font Domigorgon]) and is in all-lowercase, as well as using shorthands such as “lol,” “omg,” and “u” in place of “you.” Pickle asks the player if they can borrow the Brush, and, if the player allows them, uses it to draw their face on the floor. They will be sad if the player then draws over their drawing. == Appearance == Pickle is a short fennec fox with large ears and a large tail wearing a striped tank dress. In the artwork for the [[Chicory: The Sounds of Picnic Province]] album, Pickle is shown with orange fur, and their dress with blue and white stripes. In-game, however, their color palette can be decided and changed by the player like any other character. == Dialogue == uhh buds or smth lol == Trivia == * Pickle is one of a few NPCs to have unique dialogue changes when the player chooses the same name as them, referring to the player as “other pickle.” ** Among these NPCs, Pickle is the only one who isn’t a developer character. [[Category:Characters]] 741688cd41b1658f40a3d80fd0129ff7d0998a5c File:Onion chicory.png 6 68 130 2024-02-09T11:15:24Z Prynmatic 11 wikitext text/x-wiki onion 6ac8c09b23dfda5c22b9075292cb6e505c4b8fbf Onion 0 69 131 2024-02-09T11:20:56Z Prynmatic 11 can someone who knows more about birds be more specific about their species LOL wikitext text/x-wiki {{Infobox character |image=onion chicory.png |species=Bird* |location=Dinners |pronouns=they/them |occupation= |relationships=[[Pickle]] (pen pal) }} '''Onion''' is an NPC in Dinners. They are (anonymous) pen pals with [[Pickle]]. During the mail quest, they read out a letter in which Pickle expresses their desire to make more friends. [[Category:Characters]] 873e1329d6c0db36d30391633157f94109823200 143 131 2024-02-09T11:52:04Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |image=onion chicory.png |species=Bird* |location=Dinners |pronouns=They/Them |occupation= |relationships=[[Pickle]] (pen pal) }} '''Onion''' is an NPC in Dinners. They are (anonymous) pen pals with [[Pickle]]. During the mail quest, they read out a letter in which Pickle expresses their desire to make more friends. [[Category:Characters]] 265dad94b9dd865216755669b6be6998b60ceb17 File:Chicory's leggings.jpg 6 70 137 2024-02-09T11:39:21Z SunsetCorvid 9 Discord screenshot of confirmation that Chicory is wearing leggings and not bandages. wikitext text/x-wiki == Summary == Discord screenshot of confirmation that Chicory is wearing leggings and not bandages. a61444ec59a07a78ae0ef9e181fbfe00ffc61087 Curry 0 41 142 88 2024-02-09T11:51:22Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |image=Curry character.png |species=Dog |location=Brekkie |gender=Male |pronouns=He/Him |occupation=Sweets Shop Owner }} Curry provides a side-quest for the player having the player design a custom treat. == Trivia == * When the player achieves 100% game completion, Curry will call the player and visit the players house. * Curry is the Chicorysona of developer Greg Lobanov. * Curry has special lines if the player has the same name as Curry. [[Category:Characters]] 23d50515c202eaa70f8ac01bad04fc9426ab717f Pickle 0 67 144 134 2024-02-09T11:52:27Z SunsetCorvid 9 wikitext text/x-wiki {{Infobox character |image=Pickle chicory.png |species=Fennec Fox |location=Luncheon |pronouns=They/Them |occupation= |relationships=[[Onion]] (pen pal) }} '''Pickle''' is an NPC in Luncheon. Their dialogue uses a unique font ([https://www.dafont.com/five-cents.font Five Cents], whereas most characters use [https://www.dafont.com/domigorgon.font Domigorgon]) and is in all-lowercase, as well as using shorthands such as “lol,” “omg,” and “u” in place of “you.” Pickle asks the player if they can borrow the Brush, and, if the player allows them, uses it to draw their face on the floor. They will be sad if the player then draws over their drawing. == Appearance == Pickle is a short fennec fox with large ears and a large tail wearing a striped tank dress. In the artwork for the [[Chicory: The Sounds of Picnic Province]] album, Pickle is shown with orange fur, and their dress with blue and white stripes. In-game, however, their color palette can be decided and changed by the player like any other character. == Dialogue == uhh buds or smth lol == Trivia == * Pickle is one of a few NPCs to have unique dialogue changes when the player chooses the same name as them, referring to the player as “other pickle.” ** Among these NPCs, Pickle is the only one who isn’t a developer character. [[Category:Characters]] a8778353b5b0aeade903c5f93a83b4dc3226532a 159 144 2024-02-09T14:37:05Z Ngyikp 2 add gallery wikitext text/x-wiki {{Infobox character |image=Pickle chicory.png |species=Fennec Fox |location=Luncheon |pronouns=They/Them |occupation= |relationships=[[Onion]] (pen pal) }} '''Pickle''' is an NPC in Luncheon. Their dialogue uses a unique font ([https://www.dafont.com/five-cents.font Five Cents], whereas most characters use [https://www.dafont.com/domigorgon.font Domigorgon]) and is in all-lowercase, as well as using shorthands such as “lol,” “omg,” and “u” in place of “you.” Pickle asks the player if they can borrow the Brush, and, if the player allows them, uses it to draw their face on the floor. They will be sad if the player then draws over their drawing. == Appearance == Pickle is a short fennec fox with large ears and a large tail wearing a striped tank dress. In the artwork for the [[Chicory: The Sounds of Picnic Province]] album, Pickle is shown with orange fur, and their dress with blue and white stripes. In-game, however, their color palette can be decided and changed by the player like any other character. == Dialogue == uhh buds or smth lol == Trivia == * Pickle is one of a few NPCs to have unique dialogue changes when the player chooses the same name as them, referring to the player as “other pickle.” ** Among these NPCs, Pickle is the only one who isn’t a developer character. == Gallery == <gallery> The Sounds of Picnic Province album.png|Pickle as seen on the [[Chicory: The Sounds of Picnic Province]] album cover|link=Chicory: The Sounds of Picnic Province </gallery> [[Category:Characters]] 7b0367d3f192c1c63ffedce89ae7f0b4cb55b609 Pizza 0 21 145 103 2024-02-09T11:52:58Z Prynmatic 11 wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. In-game, they will be named after the player’s favorite food, but the default name when selecting ''I’m not sure…'' is Pizza. == Trivia == * Pizza’s identifying instrument is the recorder. [[Category:Characters]] 500ea23bf83e8a8300a0aeaa3fb845added7670e 146 145 2024-02-09T11:53:57Z Prynmatic 11 wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister)<br>[[Mom]] (mother)<br>[[Dad]] (father) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. In-game, they will be named after the player’s favorite food, but the default name when selecting ''I’m not sure…'' is Pizza. == Trivia == * Pizza’s identifying instrument is the recorder. [[Category:Characters]] 25f549a82eadc6771847ce7c4b7af3dd0020d36d 161 146 2024-02-09T14:41:59Z Ngyikp 2 add gallery wikitext text/x-wiki {{Infobox character |title=Pizza |image=Pizza character.png |species=Dog |location=Luncheon |pronouns=Any (player's choice) |occupation=Wielder<br>Janitor (Formerly)<br>Barista (formerly) |relationships=[[Clementine]] (sister)<br>[[Mom]] (mother)<br>[[Dad]] (father) |style="I do my best" }} '''Pizza''' is the main playable protagonist of [[Chicory: A Colorful Tale]]. In-game, they will be named after the player’s favorite food, but the default name when selecting ''I’m not sure…'' is Pizza. == Trivia == * Pizza’s identifying instrument is the recorder. == Gallery == <gallery> Original Soundtrack album.png|Pizza as seen on the [[Chicory: A Colorful Tale (Original Soundtrack)|original soundtrack]] album cover|link=Chicory: A Colorful Tale (Original Soundtrack) </gallery> [[Category:Characters]] 8189ab52fbe24ee77ddfc2e5ee8ae824dc634708 Clementine 0 23 147 141 2024-02-09T11:54:21Z Prynmatic 11 wikitext text/x-wiki {{Infobox character |image=Clementine character.png |species=Dog |location=Potluck |pronouns=She/Her |occupation=Art student |relationships=[[Pizza]] (sibling)<br>[[Mom]] (mother)<br>[[Dad]] (father) }} '''Clementine''' is [[Pizza]]'s younger sister. == Trivia == * It is not possible to name the player Clementine through usual methods, as when attempting to do so, the game will ask for the player’s next favorite food instead. However, nothing special happens if one does manage to call themself Clementine. [[Category:Characters]] 07a185a0d5bf6d6d2a2e17cb480de08a663a80f2 188 147 2024-02-09T18:14:31Z Prynmatic 11 wikitext text/x-wiki {{Infobox character |image=Clementine character.png |species=Dog |location=Potluck |pronouns=She/Her |occupation=Art student |relationships=[[Pizza]] (sibling)<br>[[Mom]] (mother)<br>[[Dad]] (father)<br>[[Radish]] (best friend) }} '''Clementine''' is [[Pizza]]'s younger sister. == Trivia == * It is not possible to name the player Clementine through usual methods, as when attempting to do so, the game will ask for the player’s next favorite food instead. However, nothing special happens if one does manage to call themself Clementine. [[Category:Characters]] 4c3a082fd7fc3546f168ea3627fc960e0b6ed42f File:GameGrapeSoda.png 6 71 148 2024-02-09T11:57:00Z SunsetCorvid 9 Grape Soda displayed ingame. wikitext text/x-wiki == Summary == Grape Soda displayed ingame. df6d151445a5d20e95dade246b35828911642187 User:SunsetCorvid 2 47 149 95 2024-02-09T11:58:43Z SunsetCorvid 9 wikitext text/x-wiki Hello, hello! I'm Miles Corvid, AKA SunsetCorvid!! [[File:Grapesoda.jpg|thumb|Grape Soda]] My pronouns are He/Him [[File:GameGrapeSoda.png|100px]] cd8dc19e01430971872ae521fa39511e9efb2652 Curry 0 41 150 142 2024-02-09T12:02:00Z Prynmatic 11 wikitext text/x-wiki {{Infobox character |image=Curry character.png |species=Dog |location=Brekkie |gender=Male |pronouns=He/Him |occupation=Sweets Shop Owner }} Curry is an NPC in Brekkie. He provides a side-quest for the player having the player design a custom treat. == Trivia == * Curry is the “Chicorysona” of developer [[Greg Lobanov]]. * Curry is one of a few NPCs to have unique dialogue when the player chooses the same name as them. * When the player achieves 100% game completion, Curry will call the player and visit the player’s house, along with the other developer Chicorysonas. [[Category:Characters]] 4cbe22cee76146f1efe17cd156c23337320eae00 User:Prynmatic 2 72 151 2024-02-09T12:03:26Z Prynmatic 11 Created page with "pee dog" wikitext text/x-wiki pee dog 7d5ffdb0073420eb73c2bba7434dc0d1ee330638 File:JdavisBro.png 6 73 152 2024-02-09T12:07:42Z JdavisBro 12 wikitext text/x-wiki jdavis a6043a059331789899fcd6238d9fdd7ab2ab417a User:JdavisBro 2 74 153 2024-02-09T12:08:08Z JdavisBro 12 jdavis wikitext text/x-wiki [[File:JdavisBro.png|thumb|alt=jdavis|jdavis]] jdavis bdb5ca6c0f776d602880540069c4cbc27d961a3a Quests 0 43 154 120 2024-02-09T14:24:16Z Cement 7 Inserted one quest wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === 32a864d54560d117b133ec5eefb24261e5ed9049 165 154 2024-02-09T15:08:35Z Cement 7 fix one broken link (the link is still broken) wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats|Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === de72d7eb3a7085b706f6e452fbd52cc69c0061ec 187 165 2024-02-09T17:53:14Z Cement 7 Put two chapter 4 quests wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats|Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === * [[Mail Delivery|Mail delivery]] * [[Litter|Litter collecting]] 9dc949ddeb433f26c658801225e0c0f64b881443 194 187 2024-02-09T20:41:44Z Cement 7 Inserted one quest wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats|Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === * [[Mail Delivery|Mail delivery]] * [[Litter|Litter collecting]] * [[Hummus|Hummus' garden]] ee0620e3e6d089def7474e7b775bfb89bca53b9b 195 194 2024-02-09T20:44:23Z Cement 7 Inserted one quest wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats|Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === * [[Mail Delivery|Mail delivery]] * [[Litter|Litter collecting]] * [[Hummus|Hummus' garden]] === Chapter 5: === * [[Gelato|Gelato's photos]] 4923ea8225c99528912ba5d3bd7f203029908b66 MediaWiki:Mainpage-title 8 75 155 2024-02-09T14:24:49Z Ngyikp 2 add main page title wikitext text/x-wiki Welcome to the Chicory: A Colorful Tale wiki! 8dfc93039cc8ebe178e497cf715936286920db60 MediaWiki:Mainpage-title-loggedin 8 76 156 2024-02-09T14:25:22Z Ngyikp 2 add title wikitext text/x-wiki Welcome to the Chicory: A Colorful Tale wiki! 8dfc93039cc8ebe178e497cf715936286920db60 MediaWiki:Copyright 8 77 157 2024-02-09T14:31:38Z Ngyikp 2 update copyright wikitext text/x-wiki Content is available under $1 unless otherwise noted. Chicory: A Colorful Tale™ © 2021 Greg Lobanov. All rights reserved. Finji® and regal weasel and crown logo are trademarks of Finji, LLC. d9b2d922887db6b85e8abce0674b023ce5a511af 158 157 2024-02-09T14:32:08Z Ngyikp 2 line break wikitext text/x-wiki Content is available under $1 unless otherwise noted.<br> Chicory: A Colorful Tale™ © 2021 Greg Lobanov. All rights reserved. Finji® and regal weasel and crown logo are trademarks of Finji, LLC. db471ea3c6f01bc4df519b125ba5fa175fc3dcf7 Onion 0 69 160 143 2024-02-09T14:39:33Z Ngyikp 2 add gallery wikitext text/x-wiki {{Infobox character |image=onion chicory.png |species=Bird* |location=Dinners |pronouns=They/Them |occupation= |relationships=[[Pickle]] (pen pal) }} '''Onion''' is an NPC in [[Dinners]]. They are (anonymous) pen pals with [[Pickle]]. During the mail quest, they read out a letter in which Pickle expresses their desire to make more friends. == Gallery == <gallery> The Sounds of Picnic Province album.png|Onion as seen on the [[Chicory: The Sounds of Picnic Province]] album cover|link=Chicory: The Sounds of Picnic Province </gallery> [[Category:Characters]] 747d268f3ec3da7ddedd714d01d2c9e2acbf55ac File:Cement having an existential breakdown (the universe is breaking).png 6 78 162 2024-02-09T14:42:12Z Cement 7 wikitext text/x-wiki Drawing of Cement for my user page. cc219b7b29de94500481cd70c28f7a152c5f2907 User:Cement 2 79 163 2024-02-09T14:52:04Z Cement 7 Made my user page wikitext text/x-wiki [[File:Cement having an existential breakdown (the universe is breaking).png|alt=Cement|thumb|CementPronounce: it/stares/backProfession: don't look back ''Rigor Mortis'']] The end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not the end is not they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear they are listening they can hear don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it don't touch it === Hands up, bucko === Hands up, bucko. Why this ship? Why not this ship? We're taking medical supplies to the Americas. You can leave it with us, we're going there, we can take it with us, save you a trip. Ah, that's nice. Thank you. You're welcome. Now back to what we were talking. Give us your booty. Oh yeah, I'd forgotten. ac225a53f11a922ea0b94b5c2aa712dd0cd25977 Template:Refn 10 80 164 2024-02-09T15:07:08Z Ngyikp 2 Import [[:w:Template:Refn]] wikitext text/x-wiki <includeonly>{{#if:{{{follow|}}}|{{#tag:ref|{{{1|{{{refn|}}}}}}|group={{{group|}}}|follow={{{follow|}}}}}|{{#if:{{{name|}}}|{{#tag:ref|{{{1|{{{refn|}}}}}}|name={{{name|}}}|group={{{group|}}}}}|{{#tag:ref|{{{1|{{{refn|}}}}}}|group={{{group|}}}}}}}}}</includeonly><noinclude>{{documentation}}</noinclude> 9fd4ba12eab57eadfed1197d60df81947547d276 Template:En-WP attribution notice 10 81 167 166 2024-02-09T15:09:16Z Ngyikp 2 1 revision imported from [[:dev:Template:En-WP_attribution_notice]] wikitext text/x-wiki <includeonly>{| style="border: 1px solid #e0e0e0; background-color: #f8f8f8; color:black; margin: 5px auto; width: 60%;" |- | style="padding: 3px 10px;" | [[File:Wikipedia-logo-v2.svg|30px|Wikipedia logo]] | style="font-size: 90%; padding: 3px;" | This page uses material from the Wikipedia page [[w:en:{{{1|{{FULLPAGENAME}}}}}|{{{1|{{FULLPAGENAME}}}}}]], which is released under the [[w:en:Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License|Creative Commons Attribution-ShareAlike 3.0 Unported License]] ([https://en.wikipedia.org/w/index.php?title={{urlencode:{{{1|{{FULLPAGENAME}}}}}}}&action=history view authors]). |} [[Category:Pages from English Wikipedia‎]]</includeonly> <noinclude> {{documentation}} {{En-WP attribution notice|Template:En-WP attribution notice}} </noinclude> 22d054cdfdc01cc48994b02dc0ccde4265694650 Template:En-WP attribution notice/doc 10 82 169 168 2024-02-09T15:09:19Z Ngyikp 2 1 revision imported from [[:dev:Template:En-WP_attribution_notice/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This template is used to provide attribution to Wikipedia from external wikis, as described on [[w:en:Wikipedia:Reusing Wikipedia content#Example notice|Wikipedia:Reusing Wikipedia content]]. === Usage === &#123;&#123;En-WP attribution notice&#124;''page name''&#125;&#125; The page name should be the name of the Wikipedia page that is being attributed. If no page name is specified, the name of the current page on the local wiki is used. <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> }}</includeonly> 5cd6463862f7ea04718d41b3b9aa554927f65c10 Template:Refn/doc 10 83 170 2024-02-09T15:09:35Z Ngyikp 2 Created page with "{{En-WP attribution notice|Template:Refn}}" wikitext text/x-wiki {{En-WP attribution notice|Template:Refn}} 533cf217b002c4664704f02845675fbe0479c22e 171 170 2024-02-09T15:10:58Z Ngyikp 2 link to Wikipedia help pages about this template wikitext text/x-wiki See [[:w:Template:Refn]] and [[:wp:Nesting footnotes]] for usage of this template. {{En-WP attribution notice|Template:Refn}} 54d361cf0066280a1662803be44917b6465383bc Chicory: A Colorful Tale (Original Soundtrack) 0 32 172 61 2024-02-09T15:14:47Z Ngyikp 2 update citation wikitext text/x-wiki {{Infobox album |image=Original Soundtrack album.png |released=June 10, 2021 |artist=[[Lena Raine]] |length=2 hours 36 minutes |label=Radical Dreamland }} == Tracklist == # Blank Canvas # A Colorful Tale # The Town of Luncheon # Supper Woods # Eyes in the Darkness # Not Anymore # Potluck # Art Academy # Appie Foothills # Elevenses # Wielder Temple # Probably Ancient Evil # A Wielder's Duty # Just Like You # Sips River # Gulp Swamp # Mistake # Erase You # Seeds of Doubt # Messed Up Person # Letter From the Queen # Dinners, the Big City # Clementine # Teatime Meadows # Caves # Grub Deep # Her Wretched Utterances # Feast # Alone With Myself # Nobody # uoY mA I # Abandon Me # Chicory's Theme # Banquet Rainforest {{refn|group=note|Misspelled as Banquest Rainforest on various streaming services due to a typo.<ref>[[Lena Raine|Lena Raine [@kuraine]]] (June 16, 2021). [https://twitter.com/kuraine/status/1405221495488405507 "fun embarrassing note: the track "Banquet Rainforest" is, sadly, showing up as "Banquest Rainforest" on distro storefronts & streaming services. I updated it & it will be fixed soon!! but for now please override your brain from acknowledging my silly typo"] (Tweet) – via [[:w:Twitter|Twitter]].</ref>}} # Dessert Mountain # Song of the Wielders # Simmer Springs # Turnabout Squeeze # Spoons Island # More Than Myself # Color Lab # Calling Home # Brekkie # Brunch Canyon # Buried Deep # MONSTER # She's Gone # The Wielders' Legacy # The Dark Forest # You're Not Real # Just Reach Out # Something New # Once More Into the Dark # History Against Us # Do the Impossible # Change Everything # The Mountain Top # The Tale End # A Fresh Start # This Colorful World == Notes == <references group="note" /> == References == <references /> == External links == * [https://medium.com/@kuraine/composing-for-chicory-motifs-memories-9d7351555694 Full liner notes] * [https://radicaldreamland.bandcamp.com/album/chicory-a-colorful-tale-original-soundtrack Bandcamp] * [https://open.spotify.com/album/6DdR2sAfxq6qhsYhVIa83Q Spotify] * [https://music.apple.com/sa/album/chicory-a-colorful-tale-original-soundtrack/1571468951 Apple Music] [[Category:Soundtrack albums]] c90c4eb986e45c30ba3094e0956135724e36e92e 182 172 2024-02-09T15:39:51Z Ngyikp 2 /* External links */ resort category wikitext text/x-wiki {{Infobox album |image=Original Soundtrack album.png |released=June 10, 2021 |artist=[[Lena Raine]] |length=2 hours 36 minutes |label=Radical Dreamland }} == Tracklist == # Blank Canvas # A Colorful Tale # The Town of Luncheon # Supper Woods # Eyes in the Darkness # Not Anymore # Potluck # Art Academy # Appie Foothills # Elevenses # Wielder Temple # Probably Ancient Evil # A Wielder's Duty # Just Like You # Sips River # Gulp Swamp # Mistake # Erase You # Seeds of Doubt # Messed Up Person # Letter From the Queen # Dinners, the Big City # Clementine # Teatime Meadows # Caves # Grub Deep # Her Wretched Utterances # Feast # Alone With Myself # Nobody # uoY mA I # Abandon Me # Chicory's Theme # Banquet Rainforest {{refn|group=note|Misspelled as Banquest Rainforest on various streaming services due to a typo.<ref>[[Lena Raine|Lena Raine [@kuraine]]] (June 16, 2021). [https://twitter.com/kuraine/status/1405221495488405507 "fun embarrassing note: the track "Banquet Rainforest" is, sadly, showing up as "Banquest Rainforest" on distro storefronts & streaming services. I updated it & it will be fixed soon!! but for now please override your brain from acknowledging my silly typo"] (Tweet) – via [[:w:Twitter|Twitter]].</ref>}} # Dessert Mountain # Song of the Wielders # Simmer Springs # Turnabout Squeeze # Spoons Island # More Than Myself # Color Lab # Calling Home # Brekkie # Brunch Canyon # Buried Deep # MONSTER # She's Gone # The Wielders' Legacy # The Dark Forest # You're Not Real # Just Reach Out # Something New # Once More Into the Dark # History Against Us # Do the Impossible # Change Everything # The Mountain Top # The Tale End # A Fresh Start # This Colorful World == Notes == <references group="note" /> == References == <references /> == External links == * [https://medium.com/@kuraine/composing-for-chicory-motifs-memories-9d7351555694 Full liner notes] * [https://radicaldreamland.bandcamp.com/album/chicory-a-colorful-tale-original-soundtrack Bandcamp] * [https://open.spotify.com/album/6DdR2sAfxq6qhsYhVIa83Q Spotify] * [https://music.apple.com/sa/album/chicory-a-colorful-tale-original-soundtrack/1571468951 Apple Music] [[Category:Soundtrack albums|Original Soundtrack]] 9a7728c63e05c03b0ab2042729275ea534b87951 File:An Afternoon in Luncheon album.png 6 84 173 2024-02-09T15:23:37Z Ngyikp 2 For [[Chicory: An Afternoon in Luncheon]] Collected from https://www.materiacollective.com/music/chicory-an-afternoon-in-luncheon wikitext text/x-wiki == Summary == For [[Chicory: An Afternoon in Luncheon]] Collected from https://www.materiacollective.com/music/chicory-an-afternoon-in-luncheon d5fb97a0d0656a475e7bc58737e9403833a5e759 User:Ngyikp 2 85 174 2024-02-09T15:27:54Z Ngyikp 2 start page to remove the annoying red link wikitext text/x-wiki Hi there! I'm the admin of this wiki, feel free to contact me about any wiki issues or if you need help on editing. You can also find me as '''ngyikp''' on Discord. 55135ed23a5882cbc9d81414cc8f3cbac34e0978 Oats 0 86 175 2024-02-09T15:28:01Z Cement 7 I'm gonna desscribe Oats's requests (and also, I'm seeing if I used the character infobox correctly) wikitext text/x-wiki {{Infobox character |image=onion chicory.png |species=sheep |location=Luncheon <gallery> </gallery> |pronouns=He/him |occupation= |relationships= }} [[Oats]] is a minor character who resides in Luncheon. He can be found inside and outside the Cafe. When you talk to him, he gives you a quest to show him a clothing combination. === Oats's requests. === ==== 1st: A Beanie and a Pocket Jacket ==== To complete this one, you need to wear a beanie and a pocket jacket. Both of them can be found in Chapter 1, and completing this request will earn you the item Shades. ==== 2nd: The sun over the flowers ==== 35fad6275ec19ea6e5147b54f745dd9d89316ffa 177 175 2024-02-09T15:30:55Z Cement 7 Changing the picture wikitext text/x-wiki {{Infobox character |image= [[File:Oats infobox image|frameless]] |species=sheep |location=Luncheon <gallery> </gallery> |pronouns=He/him |occupation: professional cool dude }} [[Oats]] is a minor character who resides in Luncheon. He can be found inside and outside the Cafe. When you talk to him, he gives you a quest to show him a clothing combination. === Oats's requests. === ==== 1st: A Beanie and a Pocket Jacket ==== To complete this one, you need to wear a beanie and a pocket jacket. Both of them can be found in Chapter 1, and completing this request will earn you the item Shades. ==== 2nd: The sun over the flowers ==== 24775b64e074e574f3e54f5b1719fc91b67766c7 178 177 2024-02-09T15:31:27Z Cement 7 Trying to fix the image wikitext text/x-wiki {{Infobox character |image=Oats infobox image.png |species=sheep |location=Luncheon <gallery> </gallery> |pronouns=He/him |occupation: professional cool dude }} [[Oats]] is a minor character who resides in Luncheon. He can be found inside and outside the Cafe. When you talk to him, he gives you a quest to show him a clothing combination. === Oats's requests. === ==== 1st: A Beanie and a Pocket Jacket ==== To complete this one, you need to wear a beanie and a pocket jacket. Both of them can be found in Chapter 1, and completing this request will earn you the item Shades. ==== 2nd: The sun over the flowers ==== 7f941dabeee408786f4f33a664d8fd27d224e83f 179 178 2024-02-09T15:31:53Z Cement 7 fixing infobox wikitext text/x-wiki {{Infobox character |image=Oats infobox image.png |species=sheep |location=Luncheon |pronouns=He/him |occupation: professional cool dude }} [[Oats]] is a minor character who resides in Luncheon. He can be found inside and outside the Cafe. When you talk to him, he gives you a quest to show him a clothing combination. === Oats's requests. === ==== 1st: A Beanie and a Pocket Jacket ==== To complete this one, you need to wear a beanie and a pocket jacket. Both of them can be found in Chapter 1, and completing this request will earn you the item Shades. ==== 2nd: The sun over the flowers ==== 24cb5a6178fafec7fe6c86456d8f0793ba484c81 183 179 2024-02-09T15:42:21Z Cement 7 Just finishing a sentence. I'll complete it in a minute. wikitext text/x-wiki {{Infobox character |image=Oats infobox image.png |species=sheep |location=Luncheon |pronouns=He/him |occupation: professional cool dude }} [[Oats]] is a minor character who resides in Luncheon. He can be found inside and outside the Cafe. When you talk to him, he gives you a quest to show him a clothing combination. === Oats's requests. === ==== 1st: A Beanie and a Pocket Jacket ==== To complete this one, you need to talk to Oats while wearing a beanie and a pocket jacket. Both of them can be found in Chapter 1, and completing this request will earn you the item Shades. ==== 2nd: The sun over the flowers ==== To complete this request, you need to talk to Oats while wearing a Sunhat and a Flower Dress. The sunhat can be found in Chapter 1, while the Flower Dress can be found [PLACEHOLDER], and completing this requests will earn you the item [PLACEHOLDER] 8a31647614cea4e3170a6f8c1ade54e0d6755fc4 186 183 2024-02-09T17:04:39Z Cement 7 Put some links around wikitext text/x-wiki {{Infobox character |image=Oats infobox image.png |species=sheep |location=Luncheon |pronouns=He/him |occupation: professional cool dude }} [[Oats]] is a minor character who resides in [[Luncheon]]. He can be found inside and outside the [[Cafe]]. When you talk to him, he gives you a [[Quests|quest]] to show him a [[clothing]] combination. === Oats's requests. === ==== 1st: A Beanie and a Pocket Jacket ==== To complete this one, you need to talk to Oats while wearing a beanie and a pocket jacket. Both of them can be found in Chapter 1, and completing this request will earn you the item Shades. ==== 2nd: The sun over the flowers ==== To complete this request, you need to talk to Oats while wearing a Sunhat and a Flower Dress. The sunhat can be found in Chapter 1, while the Flower Dress can be found [PLACEHOLDER], and completing this requests will earn you the item [PLACEHOLDER] 4d800ab9718078da8443a1074d1ec51260735353 193 186 2024-02-09T20:41:03Z Cement 7 Filled some holes wikitext text/x-wiki {{Infobox character |image=Oats infobox image.png |species=sheep |location=Luncheon |pronouns=He/him |occupation: professional cool dude }} [[Oats]] is a minor character who resides in [[Luncheon]]. He can be found inside and outside the [[Cafe]]. When you talk to him, he gives you a [[Quests|quest]] to show him a [[clothing]] combination. === Oats's requests. === ==== 1st: A Beanie and a Pocket Jacket ==== To complete this one, you need to talk to Oats while wearing a beanie and a pocket jacket. Both of them can be found in Chapter 1, and completing this request will earn you the item Shades. ==== 2nd: The sun over the flowers ==== To complete this request, you need to talk to Oats while wearing a Sunhat and a Flower Dress. The sunhat can be found in Chapter 1, while the Flower Dress can be found in Chapter 2, and completing this requests will earn you the item Tinted Glasses 298ecac21b34aea699c590f23872afe0b08b8def File:Oats infobox image.png 6 87 176 2024-02-09T15:28:46Z Cement 7 wikitext text/x-wiki It's Oats dc9a6aafd0663b304dbee2213f87165c087f1c22 Chicory: An Afternoon in Luncheon 0 88 180 2024-02-09T15:31:56Z Ngyikp 2 start page wikitext text/x-wiki {{Infobox album |image=An Afternoon in Luncheon album.png |released=August 15, 2019 |artist=[[Lena Raine]] |length=15 minutes |label=Materia Collective }} '''Chicory: An Afternoon in Luncheon''' is a demo EP featuring older versions of songs from [[Chicory: A Colorful Tale]]. The full soundtrack is available as [[Chicory: A Colorful Tale (Original Soundtrack)]]. == Tracklist == # Blank Canvas # Cleaning for Chicory # The Tale Begins # The Town of Luncheon # Leaving Luncheon<ref group="note">This song is not heard on the final game or soundtrack.</ref> # Supper Woods # Eyes in the Darkness # Calling Home == Notes == <references group="note" /> == External links == * [https://www.materiacollective.com/music/chicory-an-afternoon-in-luncheon Chicory: An Afternoon in Luncheon - Materia Collective] * [https://radicaldreamland.bandcamp.com/album/chicory-an-afternoon-in-luncheon Bandcamp] * [https://open.spotify.com/album/5dOr2q5XlsnYtfuy6THQ4Z Spotify] * [https://music.apple.com/us/album/chicory-an-afternoon-in-luncheon/1476812101 Apple Music] [[Category:Soundtrack albums|An Afternoon in Luncheon]] 706508e1df1ce32478a5edc580966aeb15face32 Chicory: The Sounds of Picnic Province 0 35 181 64 2024-02-09T15:39:40Z Ngyikp 2 /* External links */ resort categroy wikitext text/x-wiki {{Infobox album |image=The Sounds of Picnic Province album.png |released=June 24, 2021 |artist=[[Lena Raine]] |length=43 minutes |label=Radical Dreamland }} == Tracklist == # The Outskirts of Luncheon # Lost in Supper Woods # Peering into Potluck # A Stroll Through Appie Foothills # Indoors at Elevenses # Dipping Your Feet in Sips River # Stuck in Gulp Swamp # Lingering With Seeds of Doubt # The Alleys and Rooftops of Dinners # The Slice Shop # Singing in Teatime Meadows # Buzzing Around Feast # Under an Umbrella in Banquet Rainforest # The View From Dessert Mountain # Sleuthing Around Simmer Springs # Soaking on Spoons Island # Watching the Waves at Brekkie # The Distant Dark Forest # Coming Home to Luncheon == External links == * [https://radicaldreamland.bandcamp.com/album/chicory-the-sounds-of-picnic-province Bandcamp] * [https://open.spotify.com/album/7fIiMj5sBhQyvWX65Kcz6u Spotify] * [https://music.apple.com/us/album/chicory-the-sounds-of-picnic-province/1581532328 Apple Music] [[Category:Soundtrack albums|The Sounds of Picnic Province]] 081c22bebc85e4824f386157e933865d05f8e21e File:Piano Collections album.png 6 89 184 2024-02-09T15:47:11Z Ngyikp 2 For [[Chicory Piano Collections]] Collected from https://audiosalad.ffm.to/chicorypianocollections wikitext text/x-wiki == Summary == For [[Chicory Piano Collections]] Collected from https://audiosalad.ffm.to/chicorypianocollections 2a1135407d0e55f3843fbb33b4bc76a463c64c46 Chicory Piano Collections 0 90 185 2024-02-09T15:53:52Z Ngyikp 2 start page wikitext text/x-wiki {{Infobox album |image=Piano Collections album.png |released=November 17, 2022 |artist=[[Trevor Alan Gomes]] and [[Lena Raine]] |length=46 minutes |label= }} == Tracklist == # Town of Luncheon # Supper Woods # Chicory's Theme # Dinners, the Big City # Teatime Meadows # Appie Foothills # Banquet Rainforest # Simmer Springs # Dessert Mountain # Do the Impossible # The Mountain Top == External links == * [https://www.trevorgomes.com/chicory Official website] * [https://trevoralangomes.itch.io/chicory Sheet music] * [https://www.iam8bit.com/collections/new/products/chicory-piano-collections-vinyl-soundtrack Vinyl soundtrack] * [https://cohost.org/kuraine/post/354283-chicory-piano-collec Lena Raine's announcement post] * [https://open.spotify.com/album/3l0s0E9klSktd8pe9D4pMp Spotify] * [https://music.apple.com/us/album/chicory-piano-collections/1655143730 Apple Music] [[Category:Soundtrack albums|Piano Collections]] 0775aa2e3ed67dc9af9073744ee816961a9ea0c3 Miso 0 40 189 90 2024-02-09T19:01:20Z Chevreau 8 Added Dialogue wikitext text/x-wiki {{Infobox character |title=Miso |image=Miso.png |species=Owl |location=Potluck |pronouns=She/Her }} '''Miso''' is a character residing in [[Potluck]]. [[Pizza]] used to babysit her when Miso was younger. == Dialogue == '''Pizza''': "Miso!! You've gotten so much taller!" '''Miso''': "Pizza!! You're still very short." '''Miso''': "I'm almost done school now." :'''Pizza''': "That's so cool! I can't believe you grew up so fast!" '''Miso''': "Well, I can't believe my old babysitter is the wielder!" '''Miso''': "Well, I can't believe my old babysitter is so famous!" ''(postgame)'' :'''Pizza''': "Remember staying up late watching scary movies?" '''Miso''': "Oh, yes. My parents would never show me them... But I loved scary movies so much." ::'''Pizza''': "Me too!" ''(option 1)'' :'''Miso''': "That's why you were, undoubtedly, the coolest babysitter" ::'''Pizza''': "I'm terrified of them!" ''(option 2)'' :'''Miso''': "You always did scream the loudest." ::'''Pizza''': "I wanted to impress you and be the cool babysitter." :'''Miso''': "Well, the screaming didn't come off very cool. But you were, undoubtedly, the coolest babysitter" '''Miso''': "I want to work in public service after I graduate. I think I'll move north, to Dinners. Maybe work at Province Hall, if I'm lucky." :'''Pizza''': "Wow. So important. Good luck!" :'''Pizza''': "Good luck." ''(if [[Pizza|depressed]])'' '''Miso''': Thanks." [[Category:Characters]] b2748c5aa0181447f46f44fcddad589def7b9e93 Template:Infobox Location 10 91 190 2024-02-09T20:36:57Z Chevreau 8 Created page with "<infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="music"> <label>Music</label> </data> <data source="palette"> <label>Palette</label> </data> <data source="gifts"> <label>Gifts</label> </data> <data source="lost kids"> <label>Lost Kids</label> </data> <data source="litter"> <label>Litter</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, in..." wikitext text/x-wiki <infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="music"> <label>Music</label> </data> <data source="palette"> <label>Palette</label> </data> <data source="gifts"> <label>Gifts</label> </data> <data source="lost kids"> <label>Lost Kids</label> </data> <data source="litter"> <label>Litter</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> da105b0897cb85f1c90339a575beaaf43aa89f04 Template:Infobox Location/doc 10 92 191 2024-02-09T20:38:44Z Chevreau 8 Created page with "Sample infobox: {{Infobox location |title=Luncheon |image=Pizza character.png |music=The Town of Luncheon |palette=#AF34B3 |gifts=6 |lostkids=7 |litter=23 }} <pre> {{Infobox location |title=Luncheon |image=Pizza character.png |music=The Town of Luncheon |palette=#AF34B3 |gifts=6 |lostkids=7 |litter=23 }} </pre>" wikitext text/x-wiki Sample infobox: {{Infobox location |title=Luncheon |image=Pizza character.png |music=The Town of Luncheon |palette=#AF34B3 |gifts=6 |lostkids=7 |litter=23 }} <pre> {{Infobox location |title=Luncheon |image=Pizza character.png |music=The Town of Luncheon |palette=#AF34B3 |gifts=6 |lostkids=7 |litter=23 }} </pre> a330c59e294a0bdcf7e8fdbf2d2d9cc379054bfe 192 191 2024-02-09T20:39:04Z Chevreau 8 wikitext text/x-wiki Sample infobox: {{Infobox Location |title=Luncheon |image=Pizza character.png |music=The Town of Luncheon |palette=#AF34B3 |gifts=6 |lostkids=7 |litter=23 }} <pre> {{Infobox Location |title=Luncheon |image=Pizza character.png |music=The Town of Luncheon |palette=#AF34B3 |gifts=6 |lostkids=7 |litter=23 }} </pre> f1f0424a558c5e4e0c4ca525b23f0e85e489a724 Template:Infobox Location 10 91 196 190 2024-02-09T20:49:09Z Chevreau 8 wikitext text/x-wiki <infobox> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="music"> <label>Music</label> </data> <data source="palette"> <label>Palette</label> </data> <data source="gifts"> <label>Gifts</label> </data> <data source="lostkids"> <label>Lost Kids</label> </data> <data source="litter"> <label>Litter</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> cb07a518c5c8a7ae5bbc883b5d1312a8af196724 File:Potluck.jpg 6 93 197 2024-02-09T20:50:41Z Chevreau 8 wikitext text/x-wiki Potluck, in front of the transit bench. 92482189af9163ce49c0cea2123d93b14e94a2f1 Potluck 0 94 198 2024-02-09T20:58:01Z Chevreau 8 Created page with "{{Infobox Location |title=Luncheon |image=Potluck.png |music=Potluck |palette=fc767d d7f494 ffdc80 ffffae |gifts=2 |lostkids=2 |litter=8 }} '''Potluck''' is a location in [[Picnic Province]]. == Features == * Art Academy * Holey Shop * Clothing Swap == NPCs ==" wikitext text/x-wiki {{Infobox Location |title=Luncheon |image=Potluck.png |music=Potluck |palette=fc767d d7f494 ffdc80 ffffae |gifts=2 |lostkids=2 |litter=8 }} '''Potluck''' is a location in [[Picnic Province]]. == Features == * Art Academy * Holey Shop * Clothing Swap == NPCs == 1e0dd78388cb4a3821ce22b6d836ee2c3774069c 199 198 2024-02-09T20:58:39Z Chevreau 8 wikitext text/x-wiki {{Infobox Location |title=Potluck |image=Potluck.jpg |music=Potluck |palette=fc767d d7f494 ffdc80 ffffae |gifts=2 |lostkids=2 |litter=8 }} '''Potluck''' is a location in [[Picnic Province]]. == Features == * Art Academy * Holey Shop * Clothing Swap == NPCs == 7bc9d5a87df0e9055b104e4c717999160614936f 207 199 2024-02-09T22:53:18Z Ngyikp 2 add [[Category:Locations]] wikitext text/x-wiki {{Infobox Location |title=Potluck |image=Potluck.jpg |music=Potluck |palette=fc767d d7f494 ffdc80 ffffae |gifts=2 |lostkids=2 |litter=8 }} '''Potluck''' is a location in [[Picnic Province]]. == Features == * Art Academy * Holey Shop * Clothing Swap == NPCs == [[Category:Locations]] 9d162b2b94ab690bc33b3377cbe255da7fee3e12 Quests 0 43 200 195 2024-02-09T21:18:02Z Cement 7 Inserted TWO quests. Now that's progress. wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats|Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === * [[Mail Delivery|Mail delivery]] * [[Litter|Litter collecting]] * [[Hummus|Hummus' garden]] === Chapter 5: === * [[Gelato|Gelato's photos]] === Chapter 6-9: === * [[Butterscotch's Investigation|Butterscotch's theft Investigation]] === Post-Game: === * [[Basil|Basil's plants]] f062da55ccd94f6f4920bfe682c9bb2cf7fa7144 213 200 2024-02-09T23:46:31Z Cement 7 Inserted one quest wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats|Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === * [[Mail Delivery|Mail delivery]] * [[Litter|Litter collecting]] * [[Hummus|Hummus' garden]] === Chapter 5: === * [[Gelato|Gelato's photos]] === Chapter 6-9: === * [[Butterscotch's Investigation|Butterscotch's theft Investigation]] * [[Gravy & Biscuit|Gravy & Biscuit treasure hunting]] === Post-Game: === * [[Basil|Basil's plants]] b8fd83c3a426f18d013619f22d1056f8f4431f3c Miso 0 40 201 189 2024-02-09T21:33:14Z Chevreau 8 wikitext text/x-wiki {{Infobox character |title=Miso |image=Miso.png |species=Owl |location=Potluck |pronouns=She/Her }} '''Miso''' is a character residing in [[Potluck]]. [[Pizza]] used to babysit her when Miso was younger. == Dialogue == '''Pizza''': "Miso!! You've gotten so much taller!" '''Miso''': "Pizza!! You're still very short. I'm almost done school now." '''Pizza''': "That's so cool! I can't believe you grew up so fast!" '''Miso''': "Well, I can't believe my old babysitter is the wielder!" '''Miso''': "Well, I can't believe my old babysitter is so famous!" ''(postgame)'' '''Pizza''': "Remember staying up late watching scary movies?" '''Miso''': "Oh, yes. My parents would never show me them... But I loved scary movies so much." :'''Pizza''': "Me too!" ''(option 1)'' :'''Miso''': "That's why you were, undoubtedly, the coolest babysitter" :'''Pizza''': "I'm terrified of them!" ''(option 2)'' :'''Miso''': "You always did scream the loudest." :'''Pizza''': "I wanted to impress you and be the cool babysitter." :'''Miso''': "Well, the screaming didn't come off very cool. But you were, undoubtedly, the coolest babysitter" '''Miso''': "I want to work in public service after I graduate. I think I'll move north, to Dinners. Maybe work at Province Hall, if I'm lucky." '''Pizza''': "Wow. So important. Good luck!" '''Pizza''': "Good luck." ''(if [[Pizza|depressed]])'' '''Miso''': "Thanks." [[Category:Characters]] 10811a5b9273c88889bd6f375c8c32d5a5d9bfe9 File:Macaroon.png 6 95 202 2024-02-09T22:02:20Z Chevreau 8 Macaroon wikitext text/x-wiki == Summary == Macaroon d74612d12c16f1ea230840e1c0240124d7994e0f Macaroon 0 96 203 2024-02-09T22:07:36Z Chevreau 8 Created page with "{{Infobox character |title=Maracroon |image=Maracroon.png |species=Squirrel |location=Luncheon |pronouns=He/Him }} '''Miso''' is a character residing in [[Potluck]]. [[Pizza]] used to babysit her when Miso was younger. == Interactions == Macaroon will ask Pizza to paint his house, after which he will give Pizza the [[Clothes|Brimcap]]. Macaroon may appear at the [[Potluck|Holey Shop]] or the [[Dinners|Slice Shop]]. == Dialogue == [[Category:Characters]]" wikitext text/x-wiki {{Infobox character |title=Maracroon |image=Maracroon.png |species=Squirrel |location=Luncheon |pronouns=He/Him }} '''Miso''' is a character residing in [[Potluck]]. [[Pizza]] used to babysit her when Miso was younger. == Interactions == Macaroon will ask Pizza to paint his house, after which he will give Pizza the [[Clothes|Brimcap]]. Macaroon may appear at the [[Potluck|Holey Shop]] or the [[Dinners|Slice Shop]]. == Dialogue == [[Category:Characters]] e28839fc59e774c802e0c8b3d9ed54da0fee47b4 204 203 2024-02-09T22:08:16Z Chevreau 8 wikitext text/x-wiki {{Infobox character |title=Maracroon |image=Maracroon.png |species=Squirrel |location=Luncheon |pronouns=He/Him }} '''Macaroon''' is a resident of [[Luncheon|Potluck]]. == Interactions == Macaroon will ask Pizza to paint his house, after which he will give Pizza the [[Clothes|Brimcap]]. Macaroon may appear at the [[Potluck|Holey Shop]] or the [[Dinners|Slice Shop]]. == Dialogue == [[Category:Characters]] 3397e8c8c8a7fd893a4645e255526cfb03ef705f 205 204 2024-02-09T22:08:33Z Chevreau 8 wikitext text/x-wiki {{Infobox character |title=Macaroon |image=Macaroon.png |species=Squirrel |location=Luncheon |pronouns=He/Him }} '''Macaroon''' is a resident of [[Luncheon|Potluck]]. == Interactions == Macaroon will ask Pizza to paint his house, after which he will give Pizza the [[Clothes|Brimcap]]. Macaroon may appear at the [[Potluck|Holey Shop]] or the [[Dinners|Slice Shop]]. == Dialogue == [[Category:Characters]] 61817eeddba7deecb45a0603b55a4a338145c6fb User:Chevreau 2 97 206 2024-02-09T22:27:26Z Chevreau 8 Created page with "https://media1.tenor.com/m/tKVBHkyVmHQAAAAd/thats-why-hes-the-goat-the-goat.gif" wikitext text/x-wiki https://media1.tenor.com/m/tKVBHkyVmHQAAAAd/thats-why-hes-the-goat-the-goat.gif 408b84735070e7e6506aa5c0bb4c48f21307ab2e Template:Colorbox 10 98 208 2024-02-09T23:15:17Z Ngyikp 2 start template wikitext text/x-wiki <div style="background: {{#if:{{{1|}}}|{{{1}}}}}};width: 30px;height: 30px;border: 1px solid #ccc;">{{{2}}}</div><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude> 9ea6246de8239b8ec71f03463405fae1c73f7518 210 208 2024-02-09T23:17:12Z Ngyikp 2 fix wikitext text/x-wiki <div style="background-color: {{{1}}};width: 30px;height: 30px;border: 1px solid #ccc;"></div><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude> 247f8a6a28f52ff06c1732a0da5ff107c658d20c Template:Colorbox/doc 10 99 209 2024-02-09T23:16:41Z Ngyikp 2 start doc wikitext text/x-wiki Usage: {{colorbox|#00f3dd}} <pre> {{colorbox|#00f3dd}} </pre> 00d93bbb632615d651cd8c11a160e84d757f17df Template:Palette list 10 100 211 2024-02-09T23:41:31Z Ngyikp 2 start wikitext text/x-wiki <ul> {{#if:{{{1|}}}|{{Colorbox|{{{1}}}<!---->}}<!---->}} {{#if:{{{2|}}}|{{Colorbox|{{{2}}}<!---->}}<!---->}} {{#if:{{{3|}}}|{{Colorbox|{{{3}}}<!---->}}<!---->}} {{#if:{{{4|}}}|{{Colorbox|{{{4}}}<!---->}}<!---->}} </ul><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude> ce1cb690bd389dba33cf8eb519ec2571cedcf39b 228 211 2024-02-10T00:29:43Z Ngyikp 2 add styling wikitext text/x-wiki <templatestyles src="Palette list/style.css" /> <ul class="palettelist__root"> {{#if:{{{1|}}}|<li class="palettelist__item">{{Colorbox|{{{1}}}}} {{{1}}}</li>}} {{#if:{{{2|}}}|<li class="palettelist__item">{{Colorbox|{{{2}}}}} {{{2}}}</li>}} {{#if:{{{3|}}}|<li class="palettelist__item">{{Colorbox|{{{3}}}}} {{{3}}}</li>}} {{#if:{{{4|}}}|<li class="palettelist__item">{{Colorbox|{{{4}}}}} {{{4}}}</li>}} </ul><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude> 2f866589e844faf583cd60625bb70e2a9a1f5cf7 Template:Palette list/doc 10 101 212 2024-02-09T23:43:11Z Ngyikp 2 start doc wikitext text/x-wiki Only a maximum of 4 colors/parameters are available. Usage: {{Palette list|#00f3dd|#d8ff55|#ffa694|#b69aff}} <pre> {{Palette list|#00f3dd|#d8ff55|#ffa694|#b69aff}} </pre> 7901f0934787fc0b06b6423c8d64057f8df585b7 245 212 2024-02-10T00:31:50Z Ngyikp 2 add [[Template:Uses TemplateStyles]] wikitext text/x-wiki {{Uses TemplateStyles|Template:Palette list/style.css}} Only a maximum of 4 colors/parameters are available. Usage: {{Palette list|#00f3dd|#d8ff55|#ffa694|#b69aff}} <pre> {{Palette list|#00f3dd|#d8ff55|#ffa694|#b69aff}} </pre> 5a4570f6b2444a4b37b82ef534f6ae309cb2df73 File:Domigorgon Plus.woff2 6 102 214 2024-02-09T23:51:02Z Ngyikp 2 Original font from https://www.dafont.com/domigorgon.font, Domigorgon Plus modified by Legendknight 3000 wikitext text/x-wiki == Summary == Original font from https://www.dafont.com/domigorgon.font, Domigorgon Plus modified by Legendknight 3000 46cd1560f83465740b499fcd03459a44aa3d47af 220 214 2024-02-09T23:58:47Z Ngyikp 2 Protected "[[File:Domigorgon Plus.woff2]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Original font from https://www.dafont.com/domigorgon.font, Domigorgon Plus modified by Legendknight 3000 46cd1560f83465740b499fcd03459a44aa3d47af File:Five Cents.woff2 6 103 215 2024-02-09T23:53:20Z Ngyikp 2 https://www.dafont.com/five-cents.font wikitext text/x-wiki == Summary == https://www.dafont.com/five-cents.font 04418260fc25d42d50ad9fc9dedd59946c664c35 221 215 2024-02-09T23:58:53Z Ngyikp 2 Protected "[[File:Five Cents.woff2]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == https://www.dafont.com/five-cents.font 04418260fc25d42d50ad9fc9dedd59946c664c35 File:Lulus.woff2 6 104 216 2024-02-09T23:53:43Z Ngyikp 2 https://www.dafont.com/lulusfont.font wikitext text/x-wiki == Summary == https://www.dafont.com/lulusfont.font 813724c2481944dcc1f589087f4b736ce49e2057 222 216 2024-02-09T23:58:57Z Ngyikp 2 Protected "[[File:Lulus.woff2]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == https://www.dafont.com/lulusfont.font 813724c2481944dcc1f589087f4b736ce49e2057 File:Metafors.woff2 6 105 217 2024-02-09T23:54:00Z Ngyikp 2 https://www.dafont.com/metafors.font wikitext text/x-wiki == Summary == https://www.dafont.com/metafors.font 3ca582248e5de8f7611a6ebe3f32ed5e0ac98b5e 223 217 2024-02-09T23:59:03Z Ngyikp 2 Protected "[[File:Metafors.woff2]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == https://www.dafont.com/metafors.font 3ca582248e5de8f7611a6ebe3f32ed5e0ac98b5e File:Shannnn.woff2 6 106 218 2024-02-09T23:54:15Z Ngyikp 2 https://www.dafont.com/shannnn.font wikitext text/x-wiki == Summary == https://www.dafont.com/shannnn.font 008fec789be15eb6ad65f3c3c25804405213b02d 224 218 2024-02-09T23:59:08Z Ngyikp 2 Protected "[[File:Shannnn.woff2]]": High traffic page: Used in UI, don't allow random users to overwrite ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == https://www.dafont.com/shannnn.font 008fec789be15eb6ad65f3c3c25804405213b02d MediaWiki:Common.css 8 4 219 5 2024-02-09T23:56:37Z Ngyikp 2 add fonts css text/css /* CSS placed here will be applied to all skins */ /* [[File:Domigorgon Plus.woff2]] */ @font-face { font-family: 'Domigorgon'; src: url('https://static.miraheze.org/chicorywiki/c/c7/Domigorgon_Plus.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Five Cents.woff2]] */ @font-face { font-family: 'Five Cents'; src: url('https://static.miraheze.org/chicorywiki/e/ea/Five_Cents.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Lulus.woff2]] */ @font-face { font-family: 'Lulus'; src: url('https://static.miraheze.org/chicorywiki/1/1a/Lulus.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Metafors.woff2]] */ @font-face { font-family: 'Metafors'; src: url('https://static.miraheze.org/chicorywiki/e/ed/Metafors.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Shannnn.woff2]] */ @font-face { font-family: 'Shannnn'; src: url('https://static.miraheze.org/chicorywiki/d/d6/Shannnn.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } 760b0ec711ee0079fc28b4e9d416df99717b0fb6 248 219 2024-02-10T00:38:43Z Ngyikp 2 add ombox css text/css /* CSS placed here will be applied to all skins */ /* [[File:Domigorgon Plus.woff2]] */ @font-face { font-family: 'Domigorgon'; src: url('https://static.miraheze.org/chicorywiki/c/c7/Domigorgon_Plus.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Five Cents.woff2]] */ @font-face { font-family: 'Five Cents'; src: url('https://static.miraheze.org/chicorywiki/e/ea/Five_Cents.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Lulus.woff2]] */ @font-face { font-family: 'Lulus'; src: url('https://static.miraheze.org/chicorywiki/1/1a/Lulus.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Metafors.woff2]] */ @font-face { font-family: 'Metafors'; src: url('https://static.miraheze.org/chicorywiki/e/ed/Metafors.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Shannnn.woff2]] */ @font-face { font-family: 'Shannnn'; src: url('https://static.miraheze.org/chicorywiki/d/d6/Shannnn.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* From https://dev.miraheze.org/wiki/MediaWiki:Common.css */ /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } 2a6d48fe719516420a94b21bd5ed7e8bb1fd0ae9 250 248 2024-02-10T00:41:29Z Ngyikp 2 add ombox (2) css text/css /* CSS placed here will be applied to all skins */ /* [[File:Domigorgon Plus.woff2]] */ @font-face { font-family: 'Domigorgon'; src: url('https://static.miraheze.org/chicorywiki/c/c7/Domigorgon_Plus.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Five Cents.woff2]] */ @font-face { font-family: 'Five Cents'; src: url('https://static.miraheze.org/chicorywiki/e/ea/Five_Cents.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Lulus.woff2]] */ @font-face { font-family: 'Lulus'; src: url('https://static.miraheze.org/chicorywiki/1/1a/Lulus.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Metafors.woff2]] */ @font-face { font-family: 'Metafors'; src: url('https://static.miraheze.org/chicorywiki/e/ed/Metafors.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Shannnn.woff2]] */ @font-face { font-family: 'Shannnn'; src: url('https://static.miraheze.org/chicorywiki/d/d6/Shannnn.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* From https://dev.miraheze.org/wiki/MediaWiki:Common.css */ /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } 45ed4530403cbca761e359846ad4c212f573ec6a 253 250 2024-02-10T00:47:22Z Ngyikp 2 add ombox (3) css text/css /* CSS placed here will be applied to all skins */ /* [[File:Domigorgon Plus.woff2]] */ @font-face { font-family: 'Domigorgon'; src: url('https://static.miraheze.org/chicorywiki/c/c7/Domigorgon_Plus.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Five Cents.woff2]] */ @font-face { font-family: 'Five Cents'; src: url('https://static.miraheze.org/chicorywiki/e/ea/Five_Cents.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Lulus.woff2]] */ @font-face { font-family: 'Lulus'; src: url('https://static.miraheze.org/chicorywiki/1/1a/Lulus.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Metafors.woff2]] */ @font-face { font-family: 'Metafors'; src: url('https://static.miraheze.org/chicorywiki/e/ed/Metafors.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* [[File:Shannnn.woff2]] */ @font-face { font-family: 'Shannnn'; src: url('https://static.miraheze.org/chicorywiki/d/d6/Shannnn.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } /* From https://dev.miraheze.org/wiki/MediaWiki:Common.css */ /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } a9ed2de98401fd673fd20381b89aa1bbac73c4e5 File:Turnip infobox image.png 6 107 225 2024-02-10T00:03:34Z Cement 7 wikitext text/x-wiki This is turnip. The most useless, dumb stupid character in the whole universe. f0bdde258e3a62c5f979c94ff225dd1147b60b11 MediaWiki:Vector.css 8 3 226 52 2024-02-10T00:10:34Z Ngyikp 2 use Five Cents font for [[Pickle]] css text/css /* All CSS here will be loaded for users of the Vector skin */ body { background: #fff url('https://static.miraheze.org/chicorywiki/6/6c/Chicory_Wiki_page_background.jpg') no-repeat fixed 50% 50%; background-size: cover; --character-font: Domigorgon; } @media print { body { background: none; } } .mw-logo-wordmark, #pt-userpage-2 { font-family: Domigorgon, sans-serif; } .portable-infobox .pi-title { font-family: var(--character-font), Domigorgon, sans-serif; } .mw-body h1 { font-family: var(--character-font), Domigorgon, 'Linux Libertine', 'Georgia', 'Times', serif; } body.rootpage-Pickle { --character-font: 'Five Cents'; } .skin-vector-legacy #mw-panel, .skin-vector-legacy .mw-body, .vector-feature-zebra-design-disabled .vector-header-container, .vector-feature-zebra-design-disabled .mw-page-container, .skin-vector-legacy #footer { background-color: rgba(255, 255, 255, 0.97); } .skin-vector-legacy #footer { display: flex; flex-direction: column; } .skin-vector-legacy #footer-icons { align-self: flex-end; } 9774388c3894d330a9dd9f3c1f5cde71364f02cb Template:Palette list/style.css 10 108 227 2024-02-10T00:28:25Z Ngyikp 2 create style sanitized-css text/css .palettelist__root { list-style: none; margin: 0; padding: 0; } .palettelist__item { display: flex; gap: 8px; align-items: center; margin-bottom: 4px; } adf0911bf3e7038ad0f8c0d5eff5a5f042dd815b Template:Uses TemplateStyles 10 109 230 229 2024-02-10T00:30:30Z Ngyikp 2 1 revision imported from [[:dev:Template:Uses_TemplateStyles]] wikitext text/x-wiki <includeonly>{{#invoke:Uses TemplateStyles|main}}</includeonly><noinclude> {{Uses TemplateStyles|Template:Uses TemplateStyles/example.css|nocat=true}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 7e26d8f257e302bd8a3dcbe53f52741ae0884f74 Template:Clear 10 110 232 231 2024-02-10T00:30:34Z Ngyikp 2 1 revision imported from [[:dev:Template:Clear]] wikitext text/x-wiki <div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude> 38bab3e3d7fbd3d6800d46556e60bc6bac494d72 Module:Message box 828 111 234 233 2024-02-10T00:30:34Z Ngyikp 2 1 revision imported from [[:dev:Module:Message_box]] Scribunto text/plain -- This is a meta-module for producing message box templates, including -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. -- Load necessary modules. require('Module:No globals') local getArgs local yesno = require('Module:Yesno') local templatestyles = 'Module:Message box/styles.css' -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- Define constants local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) and not self.isSmall then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end local function templatestyles(frame, src) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. 'CONFIG_MODULE' end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) be00cd389f9f2afcd361e5d5e33622839555cbd9 Module:Message box/configuration 828 112 236 235 2024-02-10T00:30:35Z Ngyikp 2 1 revision imported from [[:dev:Module:Message_box/configuration]] Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix'}, }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } c6bd9191861b23e474e12b19c694335c4bc3af5f Module:No globals 828 113 238 237 2024-02-10T00:30:35Z Ngyikp 2 1 revision imported from [[:dev:Module:No_globals]] Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) 8ce3969f7d53b08bd00dabe4cc9780bc6afd412a Module:Yesno 828 114 240 239 2024-02-10T00:30:35Z Ngyikp 2 1 revision imported from [[:dev:Module:Yesno]] Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Template:Uses TemplateStyles/doc 10 115 242 241 2024-02-10T00:30:36Z Ngyikp 2 1 revision imported from [[:dev:Template:Uses_TemplateStyles/doc]] wikitext text/x-wiki {{Documentation subpage}} <!-- Categories go at the bottom of this page, and interwikis go on Wikidata. --> This template is used to show that templates have been converted to use [[mw:Extension:TemplateStyles|TemplateStyles]]. It is placed at the top of the template's /doc page. == Usage == ; Basic : {{tlx|Uses TemplateStyles|''TemplateStyles page name''}} ; All parameters : {{tlx|Uses TemplateStyles|''TemplateStyles page 1''|''TemplateStyles page 2''|''TemplateStyles page 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}} The first TemplateStyles page name is required. ===TemplateStyles sandboxes=== Note that if a sandbox version of the TemplateStyle exists, it will also be linked. This is only for sandbox versions. The subpage name of the sandbox version should be the same, but as a subpage of the templates sandbox. For example, if the TemplateStyles page name is <code>Template:Foo/styles.css</code>, then the sandbox version should be <code>Template:Foo/sandbox/styles.css</code> == Examples == ===One style page=== {{tlx|Uses TemplateStyles|Template:Arrowlist/styles.css}} {{Uses TemplateStyles|Template:Arrowlist/styles.css|nocat=true}} {{clear}} ===Multiple style pages=== {{tlx|Uses TemplateStyles|Template:Arrowlist/styles.css|Template:Routemap/styles.css}} {{Uses TemplateStyles|Template:Arrowlist/styles.css|Template:Routemap/styles.css|nocat=true}} {{clear}} ===Sandbox version of style page exists=== {{tlx|Uses TemplateStyles|Template:Uses TemplateStyles/example.css}} {{Uses TemplateStyles|Template:Uses TemplateStyles/example.css|nocat=true}} {{clear}} ===No style pages specified=== {{tlx|Uses TemplateStyles}} {{Uses TemplateStyles|nocat=true}} {{clear}} == TemplateData == <templatedata> { "description": "Used to show that templates have been converted to use TemplateStyles.", "format": "inline", "params": { "1": { "label": "Stylesheet 1", "description": "Name of the main stylesheet used in the template or module. Use multiple parameters to specify multiple stylesheets.", "required": true, "type": "wiki-page-name" }, "2": { "label": "Stylesheet 2", "description": "Name of the second stylesheet.", "type": "wiki-page-name" }, "3": { "label": "Stylesheet 3", "description": "Name of the third stylesheet.", "type": "wiki-page-name" }, "4": { "label": "Stylesheet 4", "description": "Name of the fourth stylesheet.", "type": "wiki-page-name" }, "5": { "label": "Stylesheet 5", "description": "Name of the fifth stylesheet.", "type": "wiki-page-name" }, "6": { "label": "Stylesheet 6", "description": "Name of the sixth stylesheet.", "type": "wiki-page-name" }, "7": { "label": "Stylesheet 7", "description": "Name of the seventh stylesheet.", "type": "wiki-page-name" }, "8": { "label": "Stylesheet 8", "description": "Name of the eighth stylesheet.", "type": "wiki-page-name" }, "9": { "label": "Stylesheet 9", "description": "Name of the ninth stylesheet.", "type": "wiki-page-name" }, "10": { "label": "Stylesheet 10", "description": "Name of the tenth stylesheet.", "type": "wiki-page-name" } } } </templatedata> <includeonly> [[Category:Templates]] </includeonly> c86681b5a4f99bb6940c1ab54645e0f43131bb4e Module:Uses TemplateStyles 828 116 244 243 2024-02-10T00:30:36Z Ngyikp 2 1 revision imported from [[:dev:Module:Uses_TemplateStyles]] Scribunto text/plain -- This module implements the {{Uses TemplateStyles}} template. local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) return p.renderBox(args) end function p.renderBox(tStyles) local boxArgs = {} if #tStyles < 1 then boxArgs.text = '<strong class="error">Error: no TemplateStyles specified</strong>' else local tStylesLinks = {} for i, ts in ipairs(tStyles) do local sandboxLink = nil local tsTitle = mw.title.new(ts) if tsTitle then local tsSandboxTitle = mw.title.new(string.format('%s:%s/sandbox/%s', tsTitle.nsText, tsTitle.baseText, tsTitle.subpageText)) if tsSandboxTitle and tsSandboxTitle.exists then sandboxLink = string.format(' ([[:%s|sandbox]])', tsSandboxTitle.prefixedText) end end tStylesLinks[i] = string.format('[[:%s]]%s', ts, sandboxLink or '') end local tStylesList = mw.text.listToText(tStylesLinks) boxArgs.text = 'This ' .. (mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') .. ' uses [[mw:Extension:TemplateStyles|TemplateStyles]]:\n' .. tStylesList end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Farm-Fresh css add.svg|32px|alt=CSS]]' return mMessageBox.main('mbox', boxArgs) end return p 3c7364ddaba9beb17a73b0f5256cd7fc3b3051f4 Turnip 0 117 246 2024-02-10T00:35:31Z Cement 7 I described only the quest of rescuing Turnip. wikitext text/x-wiki {{Infobox character |image=Turnip infobox image.png |species=Mouse |location=Potluck |pronouns=He/him |occupation=Dumb mouse |relationships=[[]] (Brother) }} Turnip is a minor character in Chicory: A Colorful tale. He exists, despite the wishes of part of the fandom. === Rescuing Turnip === In the beginning of Chapter 2, Turnip calls you to . He can be found in the dark, two screens to the left of [[Nibble Tunnel|Nibble Tunnel's]] exit to [[Potluck]]. To rescue him, you need to make a route until the exit of the cave with your paint while avoiding the bugs that eat paint. For your troubles of rescuing him, Turnip rewards you with the clothing item "Kerchief" 93da6f4de62deeec4adbc678f1e5606e39c65129 247 246 2024-02-10T00:36:38Z Cement 7 wikitext text/x-wiki {{Infobox character |image=Turnip infobox image.png |species=Mouse |location=Potluck |pronouns=He/him |occupation=Dumb mouse |relationships=[[Grits]] (Brother) }} Turnip is a minor character in Chicory: A Colorful tale. He exists, despite the wishes of part of the fandom. === Rescuing Turnip === In the beginning of Chapter 2, Turnip calls you to . He can be found in the dark, two screens to the left of [[Nibble Tunnel|Nibble Tunnel's]] exit to [[Potluck]]. To rescue him, you need to make a route until the exit of the cave with your paint while avoiding the bugs that eat paint. For your troubles of rescuing him, Turnip rewards you with the clothing item "Kerchief" 0ffe36f4a550db2fdef06138495734ebd89fbcc4 Luncheon 0 36 249 85 2024-02-10T00:41:14Z Cement 7 Moved one thing that was in the wrong place wikitext text/x-wiki '''Luncheon''' is the first major location of the game and features the [[Wielder Tower]] and [[Pizza]]'s House. Other notable features in [[Luncheon]] include: * [[Cafe]] * [[Lost Kid Daycare]] * [[Hat Maker]]/[[Garlic]]'s house * Color Map Besides that, Luncheon is directly connected with the locations of [[Gulp Swamp]], [[Nibble Tunnel]], [[Sips River]], [[Supper Woods]], [[Teatime Meadows]] and [[Yum Caves]]. [[File:Luncheon colours.png|alt=4 coloured circles are beside eachother. From left to right, the first one is a light-green, the second is salmon coloured, the third is blue, and the right-most colour is cyan. The colours are slightly brighter than the colours from before beating the game.|left|thumb|The 4 colours available in Luncheon after beating the game.]] The colour Palette of [[Luncheon]] changes over the course of the game. Going from ''[placeholder]'' through the first 9 [[chapters]], to ''[placeholder]'' in the 10th chapter, during the [[corruption]], and finally to a brighter version of the original colours after beating the game. === Residents: === * [[Basil]] * [[Beans]] * [[Chicory (character)|Chicory]] * [[Cola]] * [[Ginger]] * [[Lemon]] * [[Macaroon]] * [[Pea]] * [[Pepper]] (former [[Dinners]] resident) * [[Pickle]] * [[Pumpernickel]] [[Category:Locations]] 2bde7c7707131dac2779cc93cfab8377c06a2fd5 251 249 2024-02-10T00:41:33Z Cement 7 Nevermind, it's just perpetually broken wikitext text/x-wiki '''Luncheon''' is the first major location of the game and features the [[Wielder Tower]] and [[Pizza]]'s House. Other notable features in [[Luncheon]] include: * [[Cafe]] * [[Lost Kid Daycare]] * [[Hat Maker]]/[[Garlic]]'s house * Color Map Besides that, Luncheon is directly connected with the locations of [[Gulp Swamp]], [[Nibble Tunnel]], [[Sips River]], [[Supper Woods]], [[Teatime Meadows]] and [[Yum Caves]]. [[File:Luncheon colours.png|alt=4 coloured circles are beside eachother. From left to right, the first one is a light-green, the second is salmon coloured, the third is blue, and the right-most colour is cyan. The colours are slightly brighter than the colours from before beating the game.|left|thumb|The 4 colours available in Luncheon after beating the game.]] The colour Palette of [[Luncheon]] changes over the course of the game. Going from ''[placeholder]'' through the first 9 [[chapters]], to ''[placeholder]'' in the 10th chapter, during the [[corruption]], and finally to a brighter version of the original colours after beating the game. === Residents: === * [[Basil]] * [[Beans]] * [[Chicory (character)|Chicory]] * [[Cola]] * [[Ginger]] * [[Lemon]] * [[Macaroon]] * [[Pea]] * [[Pepper]] (former [[Dinners]] resident) * [[Pickle]] * [[Pumpernickel]] [[Category:Locations]] 8c8bb87547f1729b4c34ecdbbbdbc2c9d13954ed Template:Infobox Location/doc 10 92 252 192 2024-02-10T00:45:24Z Ngyikp 2 update palette wikitext text/x-wiki Sample infobox: {{Infobox Location |title=Luncheon |image=Example.png |music=The Town of Luncheon |palette={{palette list|#00f3dd|#d8ff55|#ffa694|#b69aff}} |gifts=6 |lostkids=7 |litter=23 }} <pre> {{Infobox Location |title=Luncheon |image=Example.png |music=The Town of Luncheon |palette={{palette list|#00f3dd|#d8ff55|#ffa694|#b69aff}} |gifts=6 |lostkids=7 |litter=23 }} </pre> 2e3d43b990e8b9843821435f69103c63392aaaeb Luncheon 0 36 254 251 2024-02-10T00:49:18Z Ngyikp 2 add {{{{Infobox Location}} wikitext text/x-wiki {{Infobox Location |title=Luncheon |image= |music=The Town of Luncheon |palette={{palette list|#00f3dd|#d8ff55|#ffa694|#b69aff}} |gifts= |lostkids= |litter= }} '''Luncheon''' is the first major location of the game and features the [[Wielder Tower]] and [[Pizza]]'s House. Other notable features in [[Luncheon]] include: * [[Cafe]] * [[Lost Kid Daycare]] * [[Hat Maker]]/[[Garlic]]'s house * Color Map Besides that, Luncheon is directly connected with the locations of [[Gulp Swamp]], [[Nibble Tunnel]], [[Sips River]], [[Supper Woods]], [[Teatime Meadows]] and [[Yum Caves]]. [[File:Luncheon colours.png|alt=4 coloured circles are beside eachother. From left to right, the first one is a light-green, the second is salmon coloured, the third is blue, and the right-most colour is cyan. The colours are slightly brighter than the colours from before beating the game.|left|thumb|The 4 colours available in Luncheon after beating the game.]] The colour Palette of [[Luncheon]] changes over the course of the game. Going from ''[placeholder]'' through the first 9 [[chapters]], to ''[placeholder]'' in the 10th chapter, during the [[corruption]], and finally to a brighter version of the original colours after beating the game. === Residents: === * [[Basil]] * [[Beans]] * [[Chicory (character)|Chicory]] * [[Cola]] * [[Ginger]] * [[Lemon]] * [[Macaroon]] * [[Pea]] * [[Pepper]] (former [[Dinners]] resident) * [[Pickle]] * [[Pumpernickel]] [[Category:Locations]] ebb65d9ac0b7beafed454a1c8159fc2e4c7b2a9d Template:Palette list/style.css 10 108 255 227 2024-02-10T00:50:11Z Ngyikp 2 override <infobox> style sanitized-css text/css .palettelist__root { list-style: none; margin: 0; padding: 0; } .palettelist__item.palettelist__item { display: flex; gap: 8px; align-items: center; margin-bottom: 4px; } 29c9d86be445feba87053a1a8dceded29906f787 Potluck 0 94 256 207 2024-02-10T00:51:14Z Ngyikp 2 update palette wikitext text/x-wiki {{Infobox Location |title=Potluck |image=Potluck.jpg |music=Potluck |palette={{palette list|#fc767d|#d7f494|#ffdc80|#ffffae}} |gifts=2 |lostkids=2 |litter=8 }} '''Potluck''' is a location in [[Picnic Province]]. == Features == * [[Art Academy]] * [[Holey Shop]] * [[Clothing Swap]] == NPCs == [[Category:Locations]] 7d8458f9053699da82f0bf621cb70b5de4ec2558 Quests 0 43 257 213 2024-02-10T00:52:51Z Cement 7 Inserted one quest wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats|Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === * [[Mail Delivery|Mail delivery]] * [[Litter|Litter collecting]] * [[Hummus|Hummus' garden]] === Chapter 5: === * [[Gelato|Gelato's photos]] * [[Garlic|Custom Hat designing]] === Chapter 6-9: === * [[Butterscotch's Investigation|Butterscotch's theft Investigation]] * [[Gravy & Biscuit|Gravy & Biscuit treasure hunting]] === Post-Game: === * [[Basil|Basil's plants]] 09449c6a5e183625e60f92f3781c100be8a99d21 258 257 2024-02-10T01:01:07Z Cement 7 Inserted one quest wikitext text/x-wiki == List of quests available quests: == === Chapter 1: === * [[Oats|Oats's requests]] * [[Macaroon|Macaroon's request]] * [[Beans's lost kittens]] * [[Cafe|Cafe shirt drawing]] === Chapter 2: === * [[Art Academy|Art Academy's paintings]] * [[Olive and Achiote|Olive & Achiote request]] * [[Turnip|Rescue Turnip]] * [[Potato|Potato custom brush]] === Chapter 3: === === Chapter 4: === * [[Mail Delivery|Mail delivery]] * [[Litter|Litter collecting]] * [[Stevia|Graffiti Colouring]] * [[Hummus|Hummus' garden]] === Chapter 5: === * [[Gelato|Gelato's photos]] * [[Garlic|Custom Hat designing]] === Chapter 6-9: === * [[Butterscotch's Investigation|Butterscotch's theft Investigation]] * [[Gravy & Biscuit|Gravy & Biscuit treasure hunting]] === Post-Game: === * [[Basil|Basil's plants]] 4ed29ca1804f592f1ae72b8453fcc58048272587 File:Turnip infobox image.png 6 107 259 225 2024-02-10T01:07:46Z Ngyikp 2 remove opinion wikitext text/x-wiki This is [[Turnip]]. b3bd2ea6c23f49a7ec861d1a225f86b0a5071af6 Turnip 0 117 260 247 2024-02-10T01:12:00Z Ngyikp 2 remove opinion wikitext text/x-wiki {{Infobox character |image=Turnip infobox image.png |species=Mouse |location=Potluck |pronouns=He/Him |occupation= |relationships=[[Grits]] (Brother) }} Turnip is a minor character. == Quests == === Rescuing Turnip === In the beginning of Chapter 2, Turnip calls you to . He can be found in the dark, two screens to the left of [[Nibble Tunnel|Nibble Tunnel's]] exit to [[Potluck]]. To rescue him, you need to make a route to the exit of the cave with your paint while avoiding the bugs that eat paint. For your troubles of rescuing him, Turnip rewards you with the clothing item "Kerchief". d80723b56143e15df79bce0b6c90babffc27d218 261 260 2024-02-10T01:13:04Z Ngyikp 2 add [[Category:Characters]] wikitext text/x-wiki {{Infobox character |image=Turnip infobox image.png |species=Mouse |location=Potluck |pronouns=He/Him |occupation= |relationships=[[Grits]] (Brother) }} Turnip is a minor character. == Quests == === Rescuing Turnip === In the beginning of Chapter 2, Turnip calls you to . He can be found in the dark, two screens to the left of [[Nibble Tunnel|Nibble Tunnel's]] exit to [[Potluck]]. To rescue him, you need to make a route to the exit of the cave with your paint while avoiding the bugs that eat paint. For your troubles of rescuing him, Turnip rewards you with the clothing item "Kerchief". [[Category:Characters]] fc25455109c224efd862abbed240dabfd1fc15cc Oats 0 86 262 193 2024-02-10T01:13:55Z Ngyikp 2 add [[Category:Characters]] wikitext text/x-wiki {{Infobox character |image=Oats infobox image.png |species=sheep |location=Luncheon |pronouns=He/him |occupation: professional cool dude }} [[Oats]] is a minor character who resides in [[Luncheon]]. He can be found inside and outside the [[Cafe]]. When you talk to him, he gives you a [[Quests|quest]] to show him a [[clothing]] combination. === Oats's requests. === ==== 1st: A Beanie and a Pocket Jacket ==== To complete this one, you need to talk to Oats while wearing a beanie and a pocket jacket. Both of them can be found in Chapter 1, and completing this request will earn you the item Shades. ==== 2nd: The sun over the flowers ==== To complete this request, you need to talk to Oats while wearing a Sunhat and a Flower Dress. The sunhat can be found in Chapter 1, while the Flower Dress can be found in Chapter 2, and completing this requests will earn you the item Tinted Glasses [[Category:Characters]] 497c267589dd65d5b88407ebcc9e1cd63f0dbbe9 Chicory 0 49 263 140 2024-02-10T01:15:24Z Ngyikp 2 /* Trivia */ cannot name yourself as Chicory wikitext text/x-wiki {{Infobox character |title=Chicory |image=ChicoryIdle.png |species=Hare |location=Luncheon |pronouns=She/Her |occupation=Wielder (Formerly) |relationships=[[Pizza]] (Friend)<br>[[Blackberry]] (Former mentor) |style="Colorful" }} '''Chicory''' is a protagonist, and the namesake, of [[Chicory: A Colorful Tale]]. == Appearance == Within her self-portrait, Chicory is depicted as a brown hare with a pink nose. She adorns a purple cloak over a black shirt and teal pants. She wears gold/orange leggings<ref>[[:File:Chicory's leggings.jpg|Confirmation that Chicory is wearing leggings.]]</ref>, and a blue to gold band around the base of her ears.<br>In game, she appears pretty much the same, but is lacking color like everyone else. The player is free to color her as they wish.<br>When her cloak is removed, it is shown she wears suspenders. == Trivia == * Chicory's identifying instrument is the clarinet. * It is not possible to name the player Chicory through usual methods, as when attempting to do so, the game will ask for the player’s next favorite food instead. However, nothing special happens if one does manage to call themself Chicory. == References == <references /> [[Category:Characters]] 53eab4e55447951c25281a23b3f903a1256c7162 Mail Delivery 0 118 264 2024-02-10T02:53:10Z Cement 7 Described the first batch of letters. I think the general description still needs some work, but right now I'm focused on the letters themselves. wikitext text/x-wiki In the middle of [[Dinners]], you can find the mail delivery building with [[Artichoke]] behind the counter. Upon talking to him he gives you a letter for you to deliver. When you deliver all the letters you've been given, talk to Artichoke again to receive your reward (normally more [[Mail Delivery|letters]]). === First letter: === The first letter is addressed to "two screens to the right of [[Dinners]] [[bus stop]]", which is one screen to the right of the mail building. There you will find [[Pepper]] worried about her child. Upon delivering the letter to her, she sees that her child was found and is on the [[Lost Kid Daycare]] and moves to [[Luncheon]] to help [[Beans]] with the [[Beans's lost kittens|lost kids]]. === First batch of letters: === ==== The middle of 3 square houses in a row: ==== The recipient is [[Granita]], in [[Potluck]]. The letter is a late birthday card sent by [[Turnip]]. ==== 2 screens north of the Sips River bridge: ==== The recipient is [[Basil]], in [[Luncheon]]. The letter is from [[Gelato]] calling him over to his house in [[Brekkie]]. For delivering this letter, Basil gives you a flower named chicory. ==== To: [[Beans]] in [[Luncheon]], From: A Concerned Parent: ==== The recipient is [[Beans]], in [[Luncheon]]. The letter is from an unknown character. After delivering the letter, Beans proceeds to tell you how much of a help Pepper has been with the lost kids and thanks you for [[Mail Delivery|delivering]] the first letter. ==== The Highest house in Brekkie: ==== The recipient is [[Taiyaki]] in, you guessed it, [[Brekkie]]. He's in the top-left screen of Brekkie (same screen as [[Cantaloupe]]), in the leftmost house. The letter is a challenge for a duel in the video-game "Mega Mash Sisters". Aw reward for delivering this letter, Taiyaki give you the item Gaming TV. === Second batch of letters: === 6fa9a6c0e17176c6c9d49ae71aada8f058ee7960 265 264 2024-02-10T04:30:13Z Cement 7 Second batch of letters. wikitext text/x-wiki In the middle of [[Dinners]], you can find the mail delivery building with [[Artichoke]] behind the counter. Upon talking to him he gives you a letter for you to deliver. When you deliver all the letters you've been given, talk to Artichoke again to receive your reward (normally more [[Mail Delivery|letters]]). === First letter: === The first letter is addressed to "two screens to the right of [[Dinners]] [[bus stop]]", which is one screen to the right of the mail building. There you will find [[Pepper]] worried about her child. Upon delivering the letter to her, she sees that her child was found and is on the [[Lost Kid Daycare]] and moves to [[Luncheon]] to help [[Beans]] with the [[Beans's lost kittens|lost kids]]. === First batch of letters: === ==== The middle of 3 square houses in a row: ==== The recipient is [[Granita]], in [[Potluck]]. The letter is a late birthday card sent by [[Turnip]]. ==== 2 screens north of the Sips River bridge: ==== The recipient is [[Basil]], in [[Luncheon]]. The letter is from [[Gelato]] calling him over to his house in [[Brekkie]]. For delivering this letter, Basil gives you a flower named chicory. ==== To: [[Beans]] in [[Luncheon]], From: A Concerned Parent: ==== The recipient is [[Beans]], in [[Luncheon]]. The letter is from an unknown character. After delivering the letter, Beans proceeds to tell you how much of a help Pepper has been with the lost kids and thanks you for [[Mail Delivery|delivering]] the first letter. ==== The Highest house in Brekkie: ==== The recipient is [[Taiyaki]] in, you guessed it, [[Brekkie]]. He's in the top-left screen of Brekkie (same screen as [[Cantaloupe]]), in the leftmost house. The letter is a challenge for a duel in the video-game "Mega Mash Sisters". Aw reward for delivering this letter, Taiyaki give you the item Gaming TV. For delivering the entire first patch, and talking to [[Artichoke]], you receive the clothing item Mailbag. === Second batch of letters: === ==== The workshop on the river: ==== The recipient is [[Potato]], in the left margin of the south of [[Sips River]]. The letter you just delivered was a figure skating costume, as Potato has the dream of being a figure skater. For delivering this letter, Potato give you the clothing item sequins. He had ordered it, but it didn't fit him, fortunately it fits [[Pizza]] perfectly. ==== Exactly between the [[Luncheon]] bench and [[Blackberry]]'s house: ==== The recipient is [[Wisteria]], in [[Supper Woods]]. The letter is a triple-layer sweetbake that has aged in travel. For your noble efforts, Wisteria kindly rewards you with 3 [[Trash|pieces of trash]]. ==== The lone cabin high on the Mountain - From [[Mochi]]: ==== The recipient is [[Momo]], in the rightmost screen of [[Dessert Mountain]]. The letter is [[Mochi]] asking Momo to go back to the Hair Salon in Dinners. ==== Exactly halfway between the Teatime bridge and top of City Hall: ==== The recipient is [[Onion]], in [[Dinners]]. The letter is from a mystery pen pal from [[Luncheon]] with a font eerily similar to [[Pickle|Pickle's]]. The letter is the pen pal talking about keeping watch for [[Chicory]] and noting how her janitor is clearly trying to form a friendship with her. ==== The most beautiful gal in Luncheon... no, all of Picnic!: ==== The recipient of this letter is [[Beans]] (she has been voted the most beautiful gal in picnic 8 years in a row). The letter is a dating proposal sent from Pepper to Beans, which is accepted. For delivering every single letter and talking to Artichoke, you are handsomely rewarded with <s>a million dollars</s> the clothing item "delivery" 5521735033f0a49fc69d95399266e9e7cefab209 Template:Infobox Person 10 119 266 2024-02-10T04:38:37Z Chevreau 8 Created page with "<infobox> <title source="name"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="pronouns"> <label>Pronouns</label> </data> <data source="role"> <label>Role</label> </data> <data source="origin"> <label>Originally from</label> </data> <data source="location"> <label>Location</label> </data> <data source="occupation"> <label>Occupation</label> </data> <data source="website"> <label>Website</label> </data> </infobo..." wikitext text/x-wiki <infobox> <title source="name"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="pronouns"> <label>Pronouns</label> </data> <data source="role"> <label>Role</label> </data> <data source="origin"> <label>Originally from</label> </data> <data source="location"> <label>Location</label> </data> <data source="occupation"> <label>Occupation</label> </data> <data source="website"> <label>Website</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 2e90bd85575212a0d23fea740515cc2e127eae10 267 266 2024-02-10T04:41:22Z Chevreau 8 wikitext text/x-wiki <infobox> <title source="name"> <default>{{PAGENAME}}</default> </title> <image source="image"/> <data source="pronouns"> <label>Pronouns</label> </data> <data source="occupation"> <label>Occupation</label> </data> <data source="location"> <label>Location</label> </data> <data source="origin"> <label>Originally from</label> </data> <data source="website"> <label>Website</label> </data> </infobox><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 6e132e3b3662d26e48f79baf1cb856ed6e88093c Greg Lobanov 0 120 268 2024-02-10T05:08:05Z Chevreau 8 Created page with "{{Infobox character |image=Curry.png |pronouns=He/Him |occupation=Game Developer |location=Vancouver, Canada |origin=Pennsylvania, USA |website=https://dumbandfat.com/ }}" wikitext text/x-wiki {{Infobox character |image=Curry.png |pronouns=He/Him |occupation=Game Developer |location=Vancouver, Canada |origin=Pennsylvania, USA |website=https://dumbandfat.com/ }} da2daf67759c3dc919a87cb961ef6c1bc66f271f 270 268 2024-02-10T08:26:34Z Chevreau 8 wikitext text/x-wiki {{Infobox Person |image=Curry_character.png |pronouns=He/Him |occupation=Game Developer |location=Vancouver, Canada |origin=Pennsylvania, USA |website=https://dumbandfat.com/ }} Greg Lobanov is the creator of Chicory: A Colorful Tale 7e9d361c0a2c5968deaa36dd9ecbd55cef2bfa01 Credits 0 121 269 2024-02-10T05:24:31Z Ngyikp 2 add credits wikitext text/x-wiki == A Game by == [[Greg Lobanov]] == with Character Design & Animation by == [[Alexis Dean-Jones]] == and Music by == [[Lena Raine]] == Featuring Audio by A Shell in the Pit == <poem> Em Halberstadt Preston Wright </poem> == and Environment Art by == Madeline Berger == with the help of our Lead Artist == You! == with help from our friends at Finji == <poem> Rebekah Saltsman Adam Saltsman Harris Foster Felix Kramer Emily Liles </poem> == QA == <poem> Jonah Davidson Taylor Normington Gwen Sandel Heather Winter </poem> == Porting by 22nd Century Toys == === Technical Direction === Tony Bratton === Programming === <poem> Jeremy Jorgensen Joe Barton </poem> === Production === <poem> Matt Scates Delaney Bannon </poem> === Additional Support === <poem> Sean Barton Andy Arizpe Cory Jackson Cullen Sturdivant Tim Godwin Edwin Silerio Keola Silva </poem> == Localization == === Spanish === Álex Hernández-Puertas === French === Maxime Lebled === Portuguese === Rebeca "Muffin" David === Italian === Matteo Pozzi (We Are Muesli) === German === ACE Agency === Russian === ACE Agency === Chinese & Korean === ACE Agency === Japanese Localization by 8-4, Ltd. === ==== Translator ==== Keiko Fukuichi ==== Producers ==== <poem> Tina Carter John Ricciardi </poem> ==== Additional Support ==== <poem> Alissa Staples Sami Ragone Hiroko Minamoto </poem> === Localization Editors === <poem> Juanma Pérez Amandine Coget Julia Quandt Fabio Bortolotti C.A. Sinclair Alexander Preymak Hua Wei Wang Fable Bae </poem> == Camera Shaders == Jord Farrell == Font Help == Allison James == Featured Illustrators == === Chicory's Studio === Alexandra Kern === Radish's Art === Quinne Larsen === "Here in the Garden" === Amora Bettany === "Hidden Kitten" === Trudi Castle === "Restraint" === Paige Bowman === "Cooking Cozy" === Francesca Buchko === "Fluffy Fluffy Sheep Sheep" === Nanae Kawahara === "The Wizard" === Atlas Thorn === "Letting Go" === Chris Bourassa === "A Breezy Field" === aurahack === "The Bachelor Party" === Louis Wain === "Portrait of bay horse looking back" === Rita Kochmarjova == "Frog Detective" character originally created by == Grace Bruxner == Musical Performances == === Woodwinds === Kristin Naigus === Violin, Viola === Michaela Nachtigall === Cello === SungHa Hong === Saxophone === Carlos Eiene === Guitar === Stemage === Drums === Kevin Ragone === "The Mountain Top" vocals by === Emi Evans == ICO Partners == <poem> James Bartholomeou Aaron Hinchion Fanny Moreaux Laura Fournier Lisa Kneidl Enrique García Thomas Bidaux David Ortiz </poem> == Sony Interactive Entertainment == <poem> Greg Rice Matt Kessler Tom Gough Christian Svensson Shawne Benson Myles Donald Matt Milberger Chris Brown Peter Brown Mike Hoffman Andrew Wong Mischa Stephens Benjamin Miller Kimberly Flaig Isu Amador Rudy Urroz </poem> == Testing and Feedback == <poem> Noel Berry Maddy Thorson Shane & Cassandra Neville Nels Anderson Sarah Northway Sara Deter Krista Parham & Kira Aguera Amora Bettany Adam Saltsman Sasha Heasley Chevy Ray Johnston Tom Francis Yvonne Hanson Trudi Castle Cole Pauls & Kirsten Hatfield Jon Remedios Michael Quell </poem> == Character Voices == <poem> Em Halberstadt Greg Lobanov Alexis Dean-Jones Lena Raine Gordon McGladdery Joey Van Alten Preston Wright Millie Wissar Rachel Sim Nicholas Zhang Maria Cecilia Saba Mauricio Ruiz Murray Cameron Smith Kat Forget Skye Ruttle </poem> == Thank you to all our Kickstarter backers!!! == <poem> -Nadrel- <nowiki>:-)</nowiki> [GMU]Jimbo @bleebakesandthings <nowiki>***Mama, Papa and Baby Bean Kardian ***</nowiki> 🧀☺xX_Mac&Cheese_Xx ☺🧀 0TastyPie0 2amsoda 7suna A Fraught Faun A Work In Progress (Sonder) Aaalia Aaron "Mad Dogg" Senser Aaron Jacobs Aaron Langille Aaron Maxwell Aaron Philip Martin Nicholas Taylor Aaron Polans Aaron Rubedo Aaron Z. Best AbsentAmpersand AbsotivelyPawsilutely Ace Simonelli Adam "Geks" Taber Adam Blenner Adam Cooper Adam Curry Adam Fahy Adam H Adam Hill Adam Nash Adam Vazquez Addy Adina Shanholtz AdjectiveFood Adrian Sandoval Adrienne G. P. Aeos Aevan Armus Aewan Affinity Archives Afterglow Ahmed Zainal Aidan Cuffe Aiden "Wubsparce" Pike Ajda Afrodit Adams AJT AKAJaybay Aketoki Akfamilyhome Al Romaithi Al W. Alan Leal Alan Maître alana AlaskanBeard Albertine Watson Alden Truby Alejandro de Cea Alex "Doobert" Strunk Alex & Wing Alex Carlson Alex Cole Alex Dach Alex Diener Alex Durrant Alex Green Alex Harby Alex Kain Alex Muench Alex Pestana Alex Rainone Alex Texter Alex Toor Alex Whitfield Alex Wolff Alex Wood Alex2life Alexa Stroth Alexander Da Silva Alexander Roederer Alexia Mohabir Alexis "pimpsc00by" Augustin Alexis Cruz Alexis Martin Alfie Kentesber Ali Melody McGowan Alic Szecsei Alice Beaulieu AlienWithABox Alina Christenbury Alisadblaze Alisson Alberti Tres Allison Müller Almond Alysha Atkinson Alyssa Bee Amanda Elliott Amanda Fuentes Amanda Harris Amanda Kadatz Amanda Lange Amanda Lockie Ambunny Amelia Bedelia Amelia Wallace Amelia Whitlow Amora B. Ampyluxe Amrynth Amy Zhou an aberrant marshtomp Ana Emily Jenkins Analiese Swerdlin Anari AndDrewAThing Anderson Pich André Twupack Andrea (SmallSmartkitty) Andreas Andres Guerrero Andrew 'delphionic' Forde Andrew Barnick Andrew Coulombe Andrew Dunn Andrew Esch Andrew Ferguson Andrew Gwinner Andrew Heran Andrew J. Petracca Andrew O'Hanlon Andrew Passafiume Andrew Reiff Andrew Trautmann Andrew Trevillian Andrew Wooldridge Andy Kurnia Angela Moseley Angelique Krencius AngryNerdBird Animal-C4 Anindor Anjou Stiles Anna D. Anna Lapinsh Anna Prein Anna S. Rodewald Anne-Sophie Sicotte AnneSibyl anniexan Anonymous Anonymous Anonymous Anonymous Anonymous AnonymousTurtle Anthony Folino Anthony Haevermaet Anthony Molé Antoine Degenne antomie Antoni Ferragut Anya Combs AP Apolline Perros April Walsh AquaAce Araraura Arcana Maze Arch Magni Andrealphus Ari Rahim Ariane A. Aric Smith Ariëlla F. Reinders Aritsune Arjan van der Meer Art Dog Artemis Butler Artemis Rathmore Artie Song ARTSYFARTSY Arturo Venegas Jr. Aru_cade ash ashinand Ash Dunn Ash Vogl Asherah Connor Ashiko Ashley Ashley Abbott Ashley Greene Ashley Kim Ashley Vincent Ashley Young asundayraine Athenrein ATK-zero Atma Phoenix Aubrey Smith Aude-javel Audrey Audrey Abell Audrey Lau Audrey Rondello Audrey Waner AuraPaladin Austin [ValantWynn] Austin D. Carlson Autumn Autumn Beauchesne Autumnsocks Avaeti Axus Aya Freundt Az and PJ Martin Aziz Hasan bajr BakedMPotato baldur orri BambooTank Barbiche Barret Vasilchik Barry Kramer Bartimaeus Baza39 bea mcjanda Bealuc Bear Cloud Games Becky Bailey Ben Austin Ben Charas Ben Griffin Ben Kerslake Ben Lin ben monster Ben Nichols Ben Nissan Ben Shore Ben Sironko Benjamin Gemmel Benjamin Morgan Benjamin Ross Benjamin Worlton Benly Benoist MARTINS Benoit "ExServ" Reinier Benoit Duroi Beth Cameron Beth Gripton Bethan J Bill Caswell Bill Imperiale Bill T Cat Bim Birchmere Marcelino Birdish Blake Guthrie Blake Imsland Blondie Blossom Kremer Bo Dodge Bob Prescott Bob Webb Bob Z Bohdan Hrynevych Bongo Boyks Bradley Vogt Brady Wiegman Brando Brandon + Kaelyn Brandon Boyer Brandon Cruzen Brandon Orden Brandon Skari Brandy Rivera Brandy Smart Brant Gehrke Braxton Burks Braxton Harris Brendan Lazio Brenden Strick Breno "Nyksund" Pires Brett Morien Brian Berk Brian Chesnut Brian Conant Brian Deisher Brian Emling Brian Foster Brian Jones Brian Mulligan Brian Szychowski Briar Sovereign Brit W. brocolie Brook Miles Brooke Vlahos Brookes Eggleston BruinTea and Pinewn Bryan Hayes Bryan Ludvigsen Bryan N. Bryant Cannon Bryce Bubbafare Budi Sugianto Bugjamboree Bush! Buttonyounta Cactus and Hedgehog cadaeic Cadence (Ciirulean) Caedachi Cael Caesol Cait Charniga Caitlin Barta Caitlin Sales Caitlin Warner Caitlyn Berry Caius Worthen CakeGameLady - Heather Smith Caleb Bott caley charchuk Callahan Fernandes Callie G. Callum Rakestraw Calmirion Calvin C. Calvin Hodges Calvin Nguyen Cam Dow Camden Laforest Camden Segal Cameron “N64Fan” Holt Cameron Cucksey Cameron Heide Cami! Camila Rigollet Camille N Candace Hudert Candi & Chris Norwood Cannipracus Captain Burbank Eastloft Captain_Trina Caramain Cari "MiX" Garafalo Cariad Keigher (KateLibC) Carl Kloster Carla McCarron (ClickMyth) Carlinos =) Carly K Carmen Lopez Caroline C Carrie Witt Casey Casey A. Childers Casey Hallahan Casey Remy Casie R. Cassie Catherine Catherine Litvaitis Catherine Styles Cats777 of Aersia catterfly Cecily Lopez Ceidz Celina and Niki Celly Gullo celsius narhwal Cezareo Chance Lytle Chanisha Charles R. Messenger Charles Ritz Charles Voita Charlie Cawood Charlie Neudorf Charlie Schatmeyer Charlie Tangora Charlotte Claridge Charlotte Landale Chase Tramel Chasquared Chaz Boston Baden Chel Wong Chelsea Theriault + Trevor Young Chimmite Chiri Vulpes Chloe Johnson Chloe Moon chooseareality Chris Blanchard Chris Blondin Chris Bourassa Chris Davis (@Tempo_Name) Chris Emory Chris Grubbs Chris Hoopes Chris LoPresti Chris Marzolf Chris McCole Chris McCoubrey Chris Portal Chris Quay Chris Usher Chris Vestman Chris Wade | Luckshot Games Christen "Lilo" Hillard Christen Higgins Christian Ching Christian Davis Christian Dobbins Christian Horazeck Christian Shelton Christian Ström Christie Christie Bennett Christina Godek Christine Hachmann Christopher "Pianfensi" Christopher Barnes Christopher Gallo Christopher Holden Christopher James Palafox Christopher Schiefer Christopher Wilkinson Christopher Wilson Chuck Gala Cieluim Claire Eckelman Claire Rochelmeyer Claire Webster Clara Sia (SeriouslyClara) Clarissa G Clay Clayton LeVerrier Clemens Scott - Broken Rules cloverfirefly Clueless Danny CobGoblin Cody Delorme Cody Frazer Cody Woodson Colby Ludwig Cole Marlar Colin Edwards Colin Fredericks Colin Gormley Collin "airhoppz" Smith Collin Harris ColorlessTiger Confetti Connery Cateni (ccateni) Connie Conor McClymont Constance Da Cunha Constantinos Tsikinis constantlyk Cookie Cat Copycat Zero Coraline & Linnea W.F. Corazon Cruz Corey Ansley CORRDZ CottonBun Courtney Gamache-Owen Craig Craig Ferguson Crashdoom CrookiNari Crystal Lanzana cstone Cy Wilmott Cy Wise CyanSorcery cyberspacecat CyborgGrandpa Cyclopsboi D3spairity Dad Daddldiddl Daisy Daisy Stonetalus Dak Lawler Dakota Hernandez Dakota Jones Dakota Trammell Damien Erambert Damon Bass dan becker Dan Sanderson Dan Supple Dan Thompson Dan Turetsky Dan Winograd-Cort Dana Herbeck Dana Kurzner Dana Plasterer danberado Dani Goodman Dani Jukes Dani Rivera DaniAdventures Daniel Daniel "Toolbox" Leiva Daniel B Daniel Badrock Daniel Bernard Daniel Chace Daniel Chin Daniel Cleaton Daniel Eriksson Daniel Gallego Daniel Huras Daniel Martin Daniel Miller Daniel Ramos Daniel Snd Daniel Tse (the koala) Danley Hsu Dannnnnnmn Danny "Shadow64" Mastrangelo Danny Martin Danny Morris Dapon Darian Darien Brice Dickinson Darksunrise Dave and Livvy Dave Pickett Dave Tamayo Davey Wreden David "Damar" Martinez David Bailey David C. Fraga David Flamm David Gates David Hammond David Herrera David J Prokopetz David Palardy David Plater David R Lafollette David Ryskalczyk David Solair David Su David Wolfpaw Davis Vu Dawn Nyan Dayeanne Hutton Dayrl Biggins Deak Niro Dean "Noaksey" Noakes death2cupbots Dee Delilah Nevill Delora Smith Deneb Mastorya Denis Lefort Denise G. Denise Konop Derek Huffman Derrick Galvan Desmond C. Simmons DetectiveMecha DeVante "ThatToonyGuy" Hall Dewi31 Dexter M ! Diana Mallery Diane Diego De la Rocha Dingo! Dio Brando DirtBoar DJ DKWings dmynerd78 Doc “Salt” OMalley DocMatoi Dominik Szymanski Dominique Julie de Gracia Dominique Müller Donovan Bender doodlerTM Dora Breckinridge Dorian Alexander Patterson Doug "Dugalls" Grosser Doug McQuiggan Douglas Cartee Douglas L. Miller DPS2004 Dragnix Dragomir "Primpy" Alexandru Dragronkhan22 Dragynwulf Draiic Draw A Dog Tuesday Dreamer DREAMFALL ONE (S.W.) Drew Breckner Drew Messinger-Michaels DSKaitlyn DubstepDentist Duncan Boehle Duncan Garrett Dustin McKenzie Dustin T dvdfu Dylan Biddle Dylan G.M. Schouten-Adavi Dylan J. Hamilton Dylan Mirales Dylan Nugent Dylan Xavier Lee E Fraire E. Phillips eamon copher EcoSage Ed Lago Edd’s Nightmare Eddie Yu Eddy Dauber Eden bakua edensoul Edi Seidler Eduard Gamiao Eduardo Diaz EEK OCK ING ONG Egill Eineborg Egotistical Raven Eike Dunn Ekrips Elaine Gómez - @chulatastic Elaine Hu Eli B Eli Conley Eli Gavett Eli Hoyt Eli Lang Eli Meir Elias Elijah Anders Marrone Elizabeth 'Byrd' Powell Elizabeth Villarreal Ella H Elliott Gibb Elliott Valentine Ellysia Bowen Elmoeprad ElolaWhen ElsaStegosaurus Elvie Mae Parian Elyse Explosion Em Harriett Em Rose Ema EmbEro Emblem Emery Curran Emi Wang Emil Bohac Emilia de Bonilla Emily Emily "enistoja" Emily Aster Emily Hancock Emily McDowell Emily Rizzo Emily Rose Emma LeRae Matthew Emma Mullen Emma Tumlin Emma Varjo emmavoid Emmy Age Endell Erakir Pompop Eric "14bit" Crawford Eric Chant Eric Heine Eric Moen Eric Nikolaisen Eric Taylor Erica Olliges Erica, Alex and Erin Jungparker Erin Gordon Erin Harker erisethSP! Esoteric Myobi Ethan Alias Ethan Davis Ethan Hall Eva S. Evan Ciolek Evan Cykana Evan Gale Evan Gibbs Evan Lewis Evan Waters Evan Zoran evelynn w Everdraed Eversong Evie Goebel Evie Yundt Excell Galatine Fabien Collard Fabrice DANIEL Fahd Faith W. FallenRedNinja Fanny Farah Ismail FCRacer FeastontheFalln Feefers Feldenthorne Felicity Wark Felix Feu Felix Kramer Fellow Traveller Fenic Fawkes Fenixero Ferdinand Uy Fermin Serena Hortas Fester L.D. MacKrell Finley Martin Fiona H Firenz Fisher Knight Flibo Florian Flyingcodfish FobiDragon Frances Acosta Frances McGregor Frances Michelle Cannon Francesco Dal Maso Francis Tessendorf François-Xavier Véronneau Fred Baker Freddie Lee Fredrik Meling Free Lives Games Fridge frio Fro-Zach FuZZyDoo Fuzzypaws! Fyren the Cat Gabby DaRienzo and Andrew Carvalho Gabe "High Energy" Scholz Gabriel Maahs Gabriel Newman Gabriel Toublanc Gaelen McFadden Gail P Sherman Galen Ryder Gamerowen Garavic Gard Gåsodden Garret Firl Gary Malone Gaspard Larivière Gavin Barbeau Gecko Geedawg Geeky Quilter geemuboi Geneva Heyward Geoffrey D Suthers Gerry McGrory Gideon Canales Gillian Feldman Gillian Hitchen GingerOwlGirl giosann Gladly but not necessarily Glenn glip Glowstick Goatframe Goblin Junk Bot Gottfredam Grace Gorski Grace Kraft Grace Williams Gracie Eastridge Graham C-M Graham Hamilton Grant "Hot Dog" Howitt Grant Allen Grash Uriza Grayson Evans Greg Filpus Greg Rice Gregory "Cricket" Gonzalez Gregory Erath Gregory Loden grey Grey Schwartz Greyson Ditzler Gri Griffin H.H. Griffin Tench Griffin White Grue Robinson GrugsPro gtc? Guia Longasa Guillaume Agnes Guille Blisnak Guillian "Venarion" Vansteene Gun Bong Güs Siska Gwen Wheeler (Phantom) Gwennaël Hertling Gwenvred LATIMIER H Charney Haley Howard HaloMixter Haneway Hannah Boyd Hannah Howden Hannah Kowalski Hannah Mickey Hannah Warner Hannes Winkler Hans-Peter H. Hapuku Harison & Mathew Wiesman Harlan Howe Harriet Rocker Harry DiBenedetto haseaufextasy Hastur HatBun hayley Hazuka He-Zin Kwon Heather V. Heidi Moone Helen Roberts HelloMissPotter Henri Potvin Henrique "TheChaltz" Chaltein Henry Ewins Hidehiko Ogata Hiken&Blake Hiyatei Ho Sheng Rou HoldenPNW Holly Rose honeyoshi Hoolemage Hope Erin Hotcakes Deluxe Howl 'Boo' Rider HpBoost HraezlyrDragon Hugo "Frigow" Peyre Hugo Westgren Hummus Bagel Hunter "SquidPunk" Hunter Nielsen Hydropales Hyon Na hypernico_ iam8bit IaMe Ian "az019er" Effendi Ian "WolfMeryX" Mery Ian Baker Ian Barczewski Ian O'Dea Ica Tongco IGU Ike_Blue ikookniet ILC iliana Imogen Mangle Important Little Games Inconnu au Bataillon Indie Alpaca indie(Function); InlandOsprey Inna Lobanova-Heasley Inumaru12 InvaderAlexTHM Ioan-Alexandru Achim iolo iplaymysnes Iris Monsivais Isa Reyes Isaac Embree Isaac Schankler Isaac Williams Isabel Echevarria Casillas Isaiah Emmanuel Isaiah Swenson Ish Kabibble Israel Murrell Issac Alzaga itare & Co’s Iván Freire Ivie Ervin Ivy C J Pharo Jack Lair Jack Svonovec Jack Vine Jacki Wang Jackie Kreitzberg Jackie Markiewicz Jacob Bauch Jacob Bristow Jacob Gonsoski Jacob Hobbie Jacob Manzano Jacob McCarty Jacob St. John Jadecore Jakeb Steadman Jameelah Shahin James "Lekon" Barry James "MysticFox" Cole James Bannerman James Buchanan James Cunningham James Dalzell Hodge James Ferguson James Heathfield James Penhallurick James Reiati Jameson Knights Jamie Gallagher Jamie Murphy Jaminx Jammy Jana Bergevin January Urso Jared Durako Jarryd Huntley Jasmine Mijares (oweeo) Jasmine Wills Jason Jason "Lakupo" Corbett Jason Coates Jason Crase Jason Frank Jason Kaplan Jason Kelley Jason Legend Plankenhorn Jason Marziani Jason Miller Jason Sandh Jason Withrow Jay Tholen Jay V Schindler Jayajamin Jaye Bull Jayla N. jayxle JB_Lelouch Jeanette Helen MacQueen Moe Jeff K. Jeff L'Heureux Jeff Quattrociocchi Jeff Thomas Jefferson Ng Jeffrey (@comet_melting) Chiao Jenn Jenna Cucore Jennie S Jennifer Layer Jennifer Maddux Jeremiah Senkpiel Jeremy Banks Jeremy Gable Jeremy Pick Jeremy Wolfe Jeremy Yanofsky Jerome "Jepp" Phelps Jes & Dyl Jess Gossen Jess Timmons Jesse Clark Jesse Jones Jesse Murphy Jesse Parra Jessica Gaytan Jessica Källberg Jessica Levy Jessica Mahon Jessica Schulze Jessie Myers Jessie Yang Jezbel Jika Knight Jill Grodt Jim Anderson Jim Otermat Jin An Jr JinieLantern Jinx Jirard Khalil The Completionist jjychara JMerilaita Jo Jo Lane jo.moe Joan Nobile Joanie "BubblyOasis" Rich João Carlos Bastos Joaquin Enrique M. Quijano Joe Collins Joe Muoio Joe Spataro Joel "Jamage" MacFadyen Joel Bartley Joel Boutiere Joel Eblin Joey Godard Joey Van Alten Johanna Pelton Johelian John "GamerMind" Löfvenius John A. Blue John Gavin Polson John Laschober John Loner John Lopez John Niedfeldt John Paul Kilcrease john phillips John R Fox John T Morton john tv John Wriston Johnjacob Miles Johnnie J. Jojjo JoJo Chalmé Jolene Cotnoir Jon Riesenbach jon sorce :) Jon South Jonathan deVries Jonathan Gregoire Jonathan Higgins Jonathan Johnson Jonathan Mintz Jonathan Peel Jonathan Pelling Jonathan Stoler Jonathan Tash Jonathon Hosbrook JonBoy Sharp Jonghyeok "Creta" Park Jonnie Irvine Joon Yoon jop Jordan Jordan Bullock Jordan Gatbunton Jordan Han Jorge Villar Llopis Josephine Baird Josh Birnholz Josh Delson Josh Deprez Josh Fairhurst Josh Fishburn Josh Grantham Josh Lew Josh More Josh T. Joshua "jehlers" Ehlers Joshua Carmody Joshua dos Santos Joshua Fowler Joshua Jacobs Joshua Niday Joshua Ols Jota Diaz jshap Ju Li Khaw Jubby Song Jules HUVIG Julia Rush Julia Struthers-Jobin Julian Harrelson Julianna Brown Julie Durand Julie M Julien July J Jump Juraba just_deli Justin Declair Justin Holt Justin Pattek Justine Raymond K.G. Orphanides Kae Bartlett Kaeru Kai Clavier KaimTime Kaiyoki Munschky kaldrenon Kaliah Joseph Kalina and Tim W. Kalithorn Kamani Arbus KamiWasa Kaora KaosuDragon Kara Buchanan Karat McFall Kardyla Karen Middaugh Karen Weiss Karim "Baito" Mariette Karin Liau Karine Church Kasran Kasson J. Fody Kat Baker Kat Higgins Katalin Laczina Kate & Jason Brennan Kate Kenneally Kate Morics Katelyn Katherine Boutin Katherine S Kathryn Flucht Katie Martin Katie SnowMew Murphy Katri Siitari Katy McGilvray Katy Tacik Katy Williams Kay Reilly Kayla Kinnunen Kaylee Malkowski kbintheworld KC Burkholder KC Shadow Keeley Saunders Keenan Loughery :) Keir Miron Keith Hollenkamp Keith Wier Kellah Kelli Wachter Kelly Knox Kelly Leigh Miller Kelly Mazurowski Kelly Robotoson Kelly Starling kelsey blizzard Kelsey R. Marquart Kendal Erickson (Rer) Kenneth Khau Kert Gartner Ketchi San Kevin Kevin (K-man567) Kevin Chen Kevin Chen Kevin Chow Kevin Clark Kevin Palardy Kevin Tyner Kevin Wu Keyle Barnes Khallysto Khide Hoskins Kien Phung Kiersten Weinstein Kiit Lock Kiley Miller-Cohick Kilian McMahon Kilian Schmuth Kilroy was here Kimberli Jones Kimberly Calderon Kimberly Lippington Kimberly Shpunder KimboWeenie Kimly Do Kind Joe Kira L Kirsten Hahn Kiss Xénia kiwibasket Klokwurk KMikiiH Kobe Kruse Kodiak Sanders Kota Yamami Krista and Bryan Kristal Kristen Lynch Kristin Naigus Kristina Misch Kristopher Gay Krystal Kay Krystal Linderman Krystal VW Bergman Krzysztof Bocer KT Kyle Davis Kyle J Graves Kyle Overby kyle pulver Kyle Reiter Kyle Stanley Kym Major KytheraSystem L zard LadyLenalia Lafta lagpu1 Lai Ling Ling Lambda + Caitlin Lan Roed Lana Zgombić Lanaruru Landry Nichols Laura Nash Laura Shay Boland Lauren CD Lauren F. Ignacio Lauren M Crown Lauren Moore Laurent DS Lavender Sheena Midnight Lee Colunga Lee Sang Hoon Leetmeister Leighann Renee Bosler Leighton Hall (Yoshibrothers17) Leila Rose Lemon Bear Lenasai Lenya Nihil Leo Henri Leslie Harwood Leslie L Levi Sullivan Liam Carter Berry Liam the Great Liam, Liv, Tash, Phil & Tracy Dean-Jones Liane Thixton Licania Lilac Llama Lilith White Lily Logsdon Lindsay Goto Lindsay Jorgensen Lindsey "ElegantFrost" Gallardo Lindsey Morgan Link Lionel S. Lior Sroka Lisa Homstad Lisa Houwers Lisa Joy Black Lisa Whittingham LittleAnna LixieLorn Liz Lass Liz Techert Liza Fridman LKdraws LKW Logan Smith Loïc Perrigault Loïc Van Doorn Lord Nightmare Loren + Jo Lorenzo G Lori Cole Lorilyn Seyler Lorxus Louis EVRARD Lu Nascimento Luca Galante Lucas Dussouchaud Lucas Mitchum Lucas Sodaro LucasMaxBros Luci Holland Luciana Chion Lucinda LuinArk Lukasz Czyżycki Luke Luke Beeman Luke Bremner Luke Stephenson LuluMolloy Lumi Mae LuminaryEm Luna Lunarexxy Lusztig Zsolt Lyndsey Gallant Lynn L. Lynne Lyra's Dad Lytebringr M. Joshua Cauller Macaroon Raccoon Maciej Deręgowski Mack Maddie Lindsey Maddie McRoy Maddie Walters Maddy Thorson Madeline Cauthon MadHatterPlushies Madi Schrenk Madiso Madison Harrell Mae Dungan Maggie Sherman Maggie Z. Maggielovesyou9 Maia Parker Maisy Kay Maja Engstrand Makoto Koji Malcolm MacDonald MaliceToaster Mallumet Malumadue mamatia Mandy Bilger Mandy Klaus Mandy Tang Mango Mano Lon ManokAdobo MantaDeray Marc Castells i Güell Marcel Kapan (P1ka) Marci Nehlsen Marcia Odal Marcie Tiraphatna Marcin Kurpas Marcos Negrete Marcus "Nausicous" Clarke Marcus Persson (Squid) Maria "Aenyx" Minko Marie Vermandé Marie Zantner Marie-Claude Rivest Marinna Romero Marion W.M. Mark Mark Brill Mark Esparagoza Mark Goddard Mark Neugodov Mark ritorto Markus Malmo Lange Markus Pointner marlegan Marley May Ranniger (Best Dog) Marlon Wiebe Marshall Tavares Marta García Villar Martin Boehme Maru MarvinNTA Mary Cassin Mary DuBoulay Mary Gore Mary Sperry Mason Braunstein Mathias Flagel Mati Jensen Matt Dickman Matt Donatelli Matt Edwards Matt Griffith Matt Isaac Matt Palardy Matthew "PlayOnSunday" James Matthew Borowske Matthew Corkins Matthew Dacus Matthew Dauber Matthew Fiebelkorn Matthew Glass Matthew Jacobson Matthew Knutsen Matthew Laird Matthew Meylikhov Matthew Mitchell Matthew Sawdon Matthew Summerlin Mauricio Andrés Aguilar Aguila Isaías Max 'n' Chachi Max / Mithzan Max Stokols & Amy Lum MaxConcannon Maxime CORRE Maxime Lebled Maxwell "Thinginator" Maxwell Allen Maxwell Stevenson May Oakes Megan Cox Mei Mel Gallus Melanie « silent genius » Massy Melissa Hoy Melissa Robertson Mélissandre Samson Melly Melody Crevoiserat Meloura Memetic (Jesse) Meness Meredith Sims MetaSwan Mia Solveig Svendsen Mia Wasell Michael "Kind of a Big Deal" Petrucha Michael “Newtellur” Baños Michael “Opt” Gram Michael and Vicky Twomey-Lee Michael Brach Michael Gonzales Michael Hobbs Michael K Lee Michael Magram Michael Matlock Michael Miele Michael Thies Michael Wolfe Michelle Lega Michelle Moreno MidoriMushrooms Mika Hearn Mikasa Ackermann Mike "rentfn" Campbell Mike and Anya Wood Mike Boxleiter Mike Brooks Mike Carini Mike Danylchuk Mike Hayes Mike Meyer Mike Motoda Mike Towndrow Mikhail Vokabre Shcherbakov Mikkel Schubert Miles Miles B. LaGree Miles Ranisavljević Miles Sorbet Milky Milkyaway Milo Stelmack Mimi Bennett Mina Smith Minji Choi Minnie Mintmane Mira H Mira Mechtley Miracle Mosley Miranda D House Miranda Jacoby MIRMIR misabiko Mishi Bear Miss Cake <3 MissingLyx MistaMishMash Mitch Rohrer mitkitty Moby Muppert Modi Operandus Mohammed Taher Mojma Molly Molly Guinan & Kevin Cottingham mondaybear21 Monica Kung Monika Roozegar Monimena Monono-Mono Mooeena Moon Jones Moonbunny Morgan Ditta Morgan Fein Morgan L'Fey Morgan Mudway Morgane Roussel Morp Mouse & Gibbs Mr Kronus Mr. Armstrong Mr.ButtButt Mr.RobQ MrAndyTF mrmicycle Ms. Kitty Garcia Mudkip Murphy Pyan Myahel MYHC Mylène "Konala" Lourdel MyOhMyke mysterywr N2Drew Nadiim ‘Dimo’ Nafei naesone@gmail.com Nagito Eevee NaseongKim Nashoute Natalie Natalie Pines Natalie Salman Nate Buck Nateycakes Nathan Cornelis Nathan Frogman Albanese Nathan Heisz Nathan Khaw Nathan Scott Nathan Wilson Nathaniel Nathaniel Mooney Nathaniel Weinstein Nattsukana naturaln0va Navigator Riley NeedlesD Neil Bickford Nemo Armistice Hana NeonSaxon Nerdie Nerial Nic Vasconcellos Nicholas and Darwin Nicholas Christopher Botticella Nicholas Ettore Nicholas Marinello Nicholas Pels Nicholas Sexton Nick DeWitt Nick Dyszel Nick Freechack Nick Goman Nick Lamarre Nick Lesniewski-Laas Nick Schaedel Nick Sylvalum Nick Yonge Nick Zuclich nicky Nico Kompass Nico. "Elpatron972" G. Nicola McBlane Nicolas "Chacha" Chaffard Nicolas Artman Nicolas Huran nicole aptekar Nicole Hopkins Nicole Keane Nicole Valentine nicomi Nigel Deakin Nigel Thurston Nik Odic Nikita Hetherington Nikki Jeske Niklas Bastian Nikolas Barone Nikolas Zihal Nim Kuehne Nissa Campbell Nitzan Eltahan Nix T Nixitur nnifVEVO Noah Noah (IcyGlaciers) Garrett Noah deFer Noah Seymour Noel Berry Nolan Nolan C. Nolan James Norgg Nosorożec Kaszle NotNite Nova Price-McGillivray novu NSzx Nubia Whitaker nuclearwhale Null (just a bard!) Oblio Ofek Shoham ogi Ohad Kanne Old Man Trouble Oliver Baker Olivia Huynh Olivia McElvaney Ollie Chamberlain Olyn Oni Victoria Garlicki Orangetronic Oscar C. Cronqvist OtterSunbee otteruw8ing4 Oudin Faustine P J Bresnahan P Miller Paige Luther Paige Riley Painglue Park Mi-hye Parker Ensworth Pate Patricia Birrueta Patricia R. Fox Paul Collier Paul Randall Pavel Přibyl PBK pears Peggy Griesinger Penny Carmichael perigou Perrydotto Person_in_the_MIRROR Pete Asick Peter Beblo Peter Boström Peter Freeman Peter Gorman Peter Lomax Peter MacDougall Peter R Valeri Petwag Phenomime Phil Simmons Philipp Lange Philippe Vallotti Phill Miller Phillip A Phoebe Babineau Pickles4nickles Pierre Le Page Pierre Remy Pierre-Étienne "Karlos" Marx Piku PinkPandaKatie Piotr "ThePiachu" Piasecki Pippin Stanish Pixel Lich Pixelpar Pixie-JJ piyoko PlayfulBit PObz pomeyarou Pompon Popopopopolo Popsicle Emperor Possumcoffee potatoTeto Prens1327 PretzelPuma Prince Faisal Ahmed Prof. Berrier Pterry Lee Punny cat PupLion qolaan Quentin Jackson Quentin Kerguélen Quinn and Wesley Quirkyapple Rachel "Nausicaa" Tougas Rachel Bensette Rachel H Sanders Rachel Helps Rachel Rocklin Rachel Saliga Rain Doggerel Raltz Klamar Ramiro Franco Ranger Kier Raphaëll Maïwen Rasmodius Raven Raven Rawb Herb Ray Gibbs Ray Soyama Rebecca Howell Red Lhota rednoux Rei Dunamis Remmie Remu "Frozenduck" P Remy Jette Rena Renae Wittenkeller Renan N. Neori renata schild Reolu Haller Reuben Friesen Reuben Horst Reyna Fire Rhandi Fisher Rhete Rich Hughes Rich Siegel Rich Welsh Richard Hough Richard Lim Richard M. Richard MacKay Richelle 'Tikara' Chamberlin Rick Desilets Rickard Wredberg Ricky Alvarado Riki Ristanovich Riley Goldstein Ripley M RisuRingo Roanne M Rob Dickson Rob Kellett Rob Lloyd Rob McMillan rob.avi Robert Khoury Robert V. Robi W.F. Robin Gonzales RoboticGorgon Rodent Liberty Rodolfo M. Rodrigo Losada Rohan J Singh Rokal Rolf S. from Bocholt/Germany Rollin Salsbery Romain "Izuka" Barthomeuf Ronald "Mr. Ronnio" Templeton Roni Rudnizky Rory Hutton Rory Kurek Rosalina Azurine Rose "Gaming Mistress" Whitcomb Rose Luna Hillock RoseyHyena Rosie Sinner Ross Williams Rowan Starling Rowan Wilson Roxie-kun Roya Shahidi Ruby Bright Ruby Mage Rue Rui Fu RukiaRiver RunicGEAR Ruoya Yan Ruuubick Ryan "Meats" B. Ryan “McRealz” McCoy Ryan C. Thompson Ryan Clark Ryan Dunnison Ryan Ewing Ryan H Ryan H. Ryan Jones Ryan K. Allen Ryan Kelley Ryan Myers Ryan Roth Ryan Woodward Rylai Ryland Jones RyNo Ryukocha Ryunos Ryzz S Everett Abbott S.A. Hannon S.O.! Sabine Lehnertz Sabrina Herman Sabrina Scotti Saffron Aurora Sage Pirotess SageOfMagic Sahil Bajaj SaltyPepperino Sam “Leonhart” Bartrom Sam Aisen Sam and Kath Sam Brown Sam Loesch Sam Meegan Sam Pryor Sam Smith Sam T. Samantha Overstreet Samantha Shelton Samrat Sinharoy Samuel "Iron Curtain" Abram Samuel Dixon Samuel Kim Samwise Manoucheri! San Zos Sanagi Sangfuu Sara Deter Sara Fonseca Sara Nasser Sarah “RoseBlood-Wolf” Howard Sarah and Colin Northway Sarah C Sarah Demoness Sarah Hertzke Sarah Hester Sarah J Brown Sarah Kingdred Sarah Li Sarah Moran Sarah O Sarah Proctor Sarah Winters Sarah Zedig Sasam Sasha Sasha Pokhvalin Satoto (HRT) Saul Weiskopf scar_duke Scarizard Schuyler Vonk Scott Boegeman Scott Christian Scott Dockery Scott Munro Scott VanVossen Sean and Anna Weatherbee Sean Bell Sean Daily Sean Fineran @SFinerFACE Sean Pelkey Sean Rowley Sean S. LeBlanc Sebastian Wolff Sébastien Delahaye SeeDborg Semy Sin senae SeriouSly Serruchox7 Seth Huseyin Seth MK Sevv Shado_Temple Shae Guntle Shammytank Shan Campbell Shane Adams Shane Hoover Shane Neville Shaniya Stalnaker Shannon Crock Shannon O'Driscoll Shanon Salka Sharktoothman11 Shaun Kellett Shauny7188 Shawn McLain Sheradan Miller Shilo Marie Shinichiki shinigami0.0 Shmangofett Sho2010 Shoop Shovan shredberg sidedishes Simms Phoenix Simon 'garkham' Landureau Simon "Dragule" B. Simon Chartrand Simon Delavenne Simon Gellis Simon Larguier Simon V. Weber Sindre Naas SinoSamba <(-'.'-)> Siobhan Tate Sisyphe SJ Revell Skeeby Bath Sketchbored Skexer Skidas Skydiver Skye Nathaniel Schiefer Skyla Moynihan Skylark Skyler Aure snazzy Soatok Dreamseeker Socks Sofi Alarcon Solia Sootstone Sophie Cottle Sophie Knowles Sophie Osborn Soshiki Hakase sp4rklefish Space Time Taco Sparf Sparkly McBagel SpeedClaw Spencer Guthro Spencer Pruitt Spencer Swan Squabert Brown Squidamus Stacy E. Read Stacy Hillstrom Stacy Key Stapecape Stargirl starwebs1 Stavros Polymenakos Stefan Harp Steffan Morgan Steffi O Stephan Reilly Stephanie Lin Stephanie Martone Stephanie Morris Stephanie Stoltenberg Stephen "Medicshy" Bond Stephen "StormRider" Clouse Stephen Borden Stephen Broughton and Max Staton Stephen Carlson Stephen Crawford Stephen Dailey Stephen Hammack Stephen Knittel Stephen Quinlan Stephen Rose Stephen Shiu Stephen Staver Steve Bartal Steve Boyland Steve Thibodeau Steve Vancouver Steve Wilder Blumenthal Steven DeVito Steven Keller Steven M. Green Steven Miclette Steven Mondragon Steven Rychetnik Steven Stadnicki Steven Walker Steven! Ragnarök Stormbriga StormDaev StrayCatalyst Subsea Suddenspark Sue R Sugar Joe SugitaKurai Sunlight Acolyte Sunny Sattari Susannah Jones Suzene M Campos del Toro SwordFirey Syd Shuster SylphiaFae Sylvie Synastrow Synthy SysL.Dev Tai-Lun Tseng tAkaMejen takayuki Tako Takuma Kanai Tal Kelrich Tamara A Tanimayto Taq Tara F Tasha James Tatsuya Kobayashi Taylor Taylor “Taylord” Chelliah Taylor Hodgskiss Taylor Muvrin Taylor Sharrar TC Loves Games Team Cherry Technetium Tegan E Terrablebot Tessa Deane Tessa Paulo Thaddeus Gontarz The Amatos The Beardomancer The Doty Boys The Edditaur The Fish and Pickle The Greatest Story Ever Played Podcast Thea May TheBrianJ TheDarkOmega TheFig TheLittleMuffin TheNSCL Theo Gerome Theory Georgiou TheReflexWonder theskywitch Thibaut Thibaut Nicodème Thinh Le this_cat_is_creepy Thomas BIDAUX Thomas Nakagawa Thomas Reisenegger Thyme Tianyi Wang Tieg Zaharia Tim Tim 'Arvor' Schreck Tim Brandl Tim Garris Tim Latshaw Tim Schultz Time Traveller TimeglitchD Timothy King Tina Kyong Wagner Tinkaknit tinymakesthings Tisza Gergő TJ Martin tlarn Tobias Wrenn todayThisJustin Todd Ritchie Togglejam Tolcace Tom Auxier Tom Bennett Tom Burdak Tom Lum Tom Shea Tom Sherlock Tom Stiefel Tombo Tommy Nelson Tommy Parnelle Tony Misgen Toon418 Tori “ino” Roberts Tori Schafer Tori-Bird Torie Torvos Trace Ashford Trace McGraw Trace Stilwell Tractor Pradarengo Trans Rights Travace Travis C Rentz Travis Littlechilds Travis Parker Tray Ma Treble Notes TREBLIG Trent Trent O'Keefe Trexenol Trey Tackett Tria Wintergarden Tricia Trudi Castle True Blue Spark Tukki turbotifi Tuyetthuc Nguyen Tweekink TwintailHellcat twow443 Tyler “Yellow Gecko” Lapp Tyler Adams Tyler Palma! Tyler Pomplon Tyler Romeo Tyler Sotaski Tyler Stoker ubuntor UltraMag64 uma Umar Ali Undersoul UnhappyWalrus Ushelajyan V G Murray Vaer Cref Valentin Chauvin Valerie Pietrasz valinthyne Valise Conferme Valou Colas Vanacan Vaughn Smith vcte Velmoor Vendigroth Vera Vartanian Veronica Moreno and Eric Siegel Veronica N Vi for Tori ViciousP85 Vicki Siolos Victor Colombo Victor Guerrero Corbi Vidan Vince Ashvey Vincent and Megan Kuyatt Vinson Luu Viola Sandusky Violet Procyon Violet Viveiros Violeta Loarca Visual Novelty Vivien Bernard VixeyHime Voluntes Voya Vuris Blackheart Vy Cornett vypxl Vyvy wakame_jp Wander & Chelle wefeelgroove weirdwolf Wendy WerDei Wes Davies Whiskers whitetexta Whitney Payne Wilfred Young Will (DMacAttck12) Ranniger Will Lienau Will Standish William Baines William Garrett William Wardlaw William_the_Crafty1 Willis Ellis III WillowShine Willy Barro Winter Snow WintherMaw Wintoli WITS Wolf Owczarek wooferzfg WorkingChef wren Wren D.M. wrongskian Xavier Ho Xavier Maples Xavier Rodríguez Planas Xeyark Xiaomeow Xraybeeb Xris Parsell Yamard Yari JZ Yasin Karatas YellowAfterlife YemaYema Yenyen Yes Yohancie Blas Yonni Youkool Young-hoon Lee Yponeko Yu-Chen Lai YukiMareanie Yun Wei Yusuf Kasim Yvan Subbotin Zac Zac Lovoy Zach Hall Zach Howell Zach Thelen Zachary Bracken Zachary Flaherty Zachary Holdcroft Zachary Waynor Zack Wheat Zaddum Zaltys Zane Corbiere Zathanz Zeke Holloman Zicofool Zid Zinthings Zirconyx Zoë Zoe "Hupfen" Landon Zoe Saufler Zoe Stille Zoë Wolfe Zorzamoth Zylo </poem> == Special Thanks == <poem> YoYoGames Ltd. Gordon McGladdery Maddy Thorson Noel Berry Kyle Pulver & Corey Nolan Cole Pauls, Kirsten Hatfield & Goomba The Staff of Aperture Coffee The Staff of Slickity Jim's All our moms, dads and siblings </poem> == Production Pets == <poem> Bobbin Chewie & Dobby Dorito (unofficial) Kiki Momo the Worm Moxxi & Widow Ori Oslo & Freya Poptart & Steggy Spunky York </poem> ---- This game was made on the unceded territories of the Squamish, Tsleil-Waututh, Musqueam, Duwamish, and Stillaguamish Nations. We acknowledge and thank them for caring for these lands and waters since before our time. 2ebe28f8b26d3842fc34eb23aa1fac19a62fdcb2